Apache vs. Nginx: qual servidor da Web é a melhor escolha?

Nginx e Apache combinados atendem a mais de 50% da web. Mas o Apache viu um declínio nos últimos anos, em favor do Nginx. O Nginx é realmente melhor e há algum benefício em usar o Apache?
Nginx é mais novo e mais rápido

O Nginx é muito mais leve do que o Apache. Este é um problema enraizado no design — por baixo do capô, o Apache deve criar um novo thread de processo para cada conexão. E embora possa processar 10 threads a uma velocidade comparável ao Nginx, quando é ampliado para centenas de conexões simultâneas, o Nginx assume a liderança.
O Nginx funciona de maneira diferente e pode processar várias conexões em um único thread de processo. Ele foi projetado para funcionar também como um proxy reverso simples; portanto, em vez de trazer a sobrecarga de um servidor da web completo, ele foi projetado simplesmente para mover bytes de dados de um lugar para outro. O Nginx pode ser duas vezes mais rápido que o Apache ao servir conteúdo estático e muito menos uso de CPU ao fazer isso, o que o torna excelente para execução em sistemas de baixa potência.
No entanto, essa velocidade realmente importa apenas ao servir conteúdo estático para muitos usuários ao mesmo tempo. Quando você começa a servir conteúdo dinâmico, o gargalo está em outro lugar, como em seu mecanismo PHP, seu aplicativo da web ou seu banco de dados.
Como o Nginx também é um proxy reverso, você pode usá-lo na frente de outro servidor (até mesmo o Apache) especificamente para hospedar conteúdo estático. Um exemplo útil são os aplicativos Node de renderização do lado do servidor, em que as solicitações HTTP para páginas dinâmicas precisam ser encaminhadas a um servidor que executa o Express, mas os recursos estáticos (imagens, folhas de estilo etc.) podem ser servidos a partir do Nginx. A sobrecarga ao fazer isso é mínima e pode acelerar o conteúdo estático significativamente.
Apache é mais configurável

O Apache está mais focado em ser um servidor web e possui alguns recursos úteis, como arquivos de configuração baseados em diretório e hosts virtuais. Isso torna muito fácil executar vários sites no mesmo servidor. Por exemplo, você pode adicionar um bloco VirtualHost como este a /etc/httpd/conf/httpd. conf:
< VirtualHost 127.0.0.1:80> DocumentRoot / var / www / html ServerName www. firstsite. com < / VirtualHost >
Isso fará com que o Apache encaminhe todas as solicitações para www. firstsite. com para uma pasta específica, que pode ter suas próprias configurações independentes de outros sites em execução no servidor. Isso pode ser aumentado ainda mais com arquivos . htaccess, que podem sobrescrever a configuração do servidor para uma pasta específica. No entanto, executar sites com arquivos . htaccess é mais lento do que usar a configuração global e só é recomendado nos casos em que você deseja permitir que outros usuários modifiquem as configurações do servidor para um diretório sem tocar na configuração global (hospedagem compartilhada é o principal exemplo disso ).
O Nginx também pode servir a vários domínios de um único servidor e encaminhá-los para suas próprias pastas, mas não é tão configurável, especialmente com uma falta de funcionalidade semelhante a . htaccess. Mas, se você realmente precisa desse tipo de funcionalidade, pode usar o Nginx como um proxy reverso para acessar o conteúdo servido em outro lugar, mesmo executando em outra instância do Nginx ou vários contêineres do Docker.
O Apache também tem suporte a plug-ins muito melhor, na forma de módulos que podem ser carregados dinamicamente sem reiniciar o servidor. Nginx também oferece suporte a módulos, mas apenas recentemente adicionou o carregamento de módulo, portanto, muitos módulos ainda exigem que você aplique o patch no binário.
Qual servidor você deve escolher?
Apesar das deficiências, eles são servidores da web decentes. Eles são gratuitos e de código aberto, embora o Nginx tenha uma versão paga chamada Nginx Plus, que adiciona um balanceador de carga de software em cima do Nginx de código aberto. Ambos os servidores são seguros, têm boas comunidades de suporte e são fáceis de configurar. Embora o Nginx ganhe em velocidade, ambos são comparáveis na exibição de conteúdo dinâmico.
Se você não tiver certeza de qual usar, escolha o Nginx. Em geral, se você estiver executando um sistema Unix, o Nginx é uma boa escolha simplesmente devido à sua velocidade e facilidade de uso. Se você precisar de mais configuração, especialmente se estiver executando muitos sites no mesmo servidor, o Apache pode funcionar melhor.
Uma coisa a observar é que se você estiver usando PHP, a configuração do Nginx é um pouco diferente. O Apache executa PHP nativamente no mesmo processo, comunicando-se diretamente com o mecanismo PHP. O Nginx o executa em um processo separado (PHP-FPM) e se comunica com ele como um proxy reverso. Ambos os métodos são igualmente rápidos, mas sua configuração pode variar.
Nginx e Apache suportam totalmente qualquer sistema Unix, incluindo FreeBSD. Embora o Nginx tecnicamente tenha uma versão que roda no Windows, não é a melhor. O Apache é totalmente compatível com Windows e, como tal, é o servidor da Web ideal para essa plataforma.
Nenhum comentário