Desenvolvimento

1 set, 2014

Descubra os segredos do Nginx para melhorar o desempenho do seu site

Publicidade

Nginx é um webserver open source de alta performance. Testes comprovam que um único servidor utilizando este software é capaz de atender facilmente a mais de 10 mil conexões.

Além de servidor web, o Nginx pode ser utilizado como proxy reverso, suportando os protocolos HTTP, SMTP, POP3 e IMAP, e como balanceador de carga, se tornando, assim, uma ferramenta extremamente versátil.

Segundo dados do Netcraft (julho/2014), servidores Web Nginx são responsáveis por hospedar cerca de 14% dos sites atualmente ativos e 19% dos sites mais acessados. Criado com o objetivo de suportar o tráfego intenso de um serviço Web, o Nginx atualmente é usado em serviços Web populares, tais como WordPress, Cloudflare, PHP.net, Instagram e Netflix, entre outros. Os motivos para tanto crescimento são as suas principais características: alto desempenho, estabilidade, configuração simples e baixo consumo de recursos.

Razões não faltam para entender o contínuo aumento da adoção deste webserver. Em comparação com o Apache, servidor Web mais popular e tradicional, o Nginx leva vantagem, principalmente no quesito consumo de recursos quando demandado a grandes volumes de requisições. Isto se deve ao fato do Nginx ser um servidor web que segue o conceito “event-based web server” (ou seja, utiliza um processo-mestre e um – ou poucos – processos operários disparados sob demanda). Já o Apache, em sua utilização mais comum, baseia-se no conceito “process-based server” (um processo para atender cada requisição), gerando assim maior degradação de performance e consumo de recursos sob as mesmas condições.

No entanto, estas duas ferramentas não são necessariamente concorrentes. Visto sua capacidade de proxy reverso HTTP, o Nginx pode ser utilizado como frontend, recebendo as requisições HTTP para, por exemplo, aproveitar-se de seus recursos de cache, e solicitando ao Apache, o qual estará em backend, as demais requisições. Tal combinação permite a redução de recursos do ambiente Web.

É possível, por exemplo, diminuir o consumo de recursos do Apache fazendo com que as requisições web passem primeiro pelo Nginx que irá processar e/ou armazenar em cache determinados tipos de arquivos.

Principais características

  • Velocidade: Por usar socket assíncrono (arquitetura orientada a eventos), não espalha processos quando recebe requisições. Um processo para cada núcleo de processamento é suficiente para dar conta de milhares de conexões, permitindo o uso mais eficiente da CPU e memória;
  • Configuração flexível: Seu arquivo de configuração é muito mais simples de ser entendido, pois usa o conceito de blocos hierárquicos e documentação API detalhada;
  • Streaming: Nginx possui suporte nativo para streaming de conteúdo FLV e MP4, sem necessidade de módulos adicionais.
  • Instalação de módulos: Diferentemente do Apache, que permite o acoplamento dinâmico dos módulos que provem funcionalidade adicional ao Nginx devem ser especificados no momento da compilação. Ou seja, caso você deseje, por exemplo, ter suporte a requisições HTTPS na versão já instalada no sistema, você terá que recompilar novamente o web server.
  • Configuração de hosts virtuais: Toda e qualquer configuração referente a um domínio hospedado no Nginx deve ser realizado diretamente em seu arquivo de configuração (nginx.conf). Isto garante uma melhor performance no processamento da requisição, porém, retira um pouco da flexibilidade que o Apache permite através de seus arquivos .htaccess.

Conclusão

O Nginx, por possuir uma arquitetura mais enxuta e possibilidades de uso além das funções de servidor Web, se adequa melhor às necessidades de alta demanda tão necessárias para websites de sucesso.

Por isto, nota-se uma crescente migração de sites que utilizam outros web servers para o Nginx dentro dos top sites melhores ranqueados, como ocorreu com o Facebook, SourceForge, WordPress, ImageShack, dentre outros. Tanto que, desde maio/2014 o Nginx é o web server mais utilizado entre os top 1000 websites rankeados pelo Alexa, tendo 40,9% de participação, frente aos 32,3% do Apache e 8,7% do IIS, segundo levantamento do W3Techs.