Nginx vs Apache: Qual é o melhor servidor Web?

Publicados: 2021-12-30

Embora existam muitos tipos diferentes de software de servidor, você geralmente reduz os concorrentes a Nginx vs Apache. Isso ocorre porque ambos oferecem desempenho superior para muitas configurações de servidor diferentes e se adaptam melhor a determinados aplicativos do que outros.

Mesmo assim, você ainda vai querer considerar qual deles faz mais sentido para suas necessidades. Existem algumas categorias diferentes a serem analisadas, como suporte ao sistema operacional (SO), segurança, documentação e (é claro) desempenho.

Para este post, vamos comparar Nginx vs Apache em várias áreas diferentes. No final, resumiremos nossas descobertas e forneceremos as informações necessárias para você escolher a opção certa.

Apresentando Nginx e Apache

Antes de entrarmos nos detalhes profundos de cada tipo de servidor, vamos dar a você o resumo do Nginx e do Apache. Quando chegarmos à próxima seção, você aprenderá sobre alguns dos casos de uso de ambos e onde poderá vê-los 'na natureza'.

#Nginx vs #Apache: Qual é o servidor web certo para você?
Clique para Tweetar

Nginx

O logotipo Nginx.

Comparado ao Apache, o Nginx ( pronuncia-se “engine X” ) é relativamente novato no mundo da tecnologia do lado do servidor. No entanto, a equipe de desenvolvimento assumiu a tarefa de expandir as limitações dos sistemas Apache.

É uma solução de código aberto que muitos usuários consideram por sua estabilidade e escalabilidade. Isso se deve (em parte) à sua arquitetura orientada a eventos – mais sobre isso posteriormente. Na verdade, parte do objetivo da versão inicial do Nginx era ser capaz de lidar com 10.000 conexões de uma só vez. Isso é algo que era necessário em 2004, devido à rápida expansão da web na época.

No geral, administradores de sistema e proprietários de sites gostam do Nginx porque ele é eficiente, funciona muito bem com arquivos estáticos e desempenha as funções de um balanceador de carga e um 'proxy reverso'. Tudo isso é relevante para o tempo de atividade, velocidade e segurança.

Apache

O logotipo do servidor Apache HTTPS.

Apache é um pouco o 'velho' da tecnologia de servidor web. É quase tão antigo quanto a própria web – desde 1995, o Apache tem sido o software no centro de milhares, senão milhões, de servidores.

Por muito tempo, o Apache tem sido uma tecnologia dominante entre os 'sysadmins'. Há muitas razões para isso – algumas relacionadas ao desempenho e outras à força do hábito. Independentemente disso, os servidores Apache são muito úteis onde as configurações são importantes.

Você encontrará o Apache como software pré-instalado em todas as distribuições Linux, portanto, é uma solução obrigatória para esse sistema operacional. No entanto, embora use uma arquitetura diferente do Nginx, ainda oferece poder, escalabilidade e documentação fantástica.

Muitos administradores de sistema também gostam da natureza personalizável do Apache e de como você pode criar um servidor próprio carregando vários módulos.

Os casos de uso gerais para Nginx vs Apache

É justo dizer que o Apache é um “pau para toda obra” quando se trata de servir sites. No entanto, esta é uma bênção mista. Sim, os servidores Apache podem fazer quase tudo o que o Nginx pode fazer, mas às custas de um código com menos desempenho. A idade é um fator aqui.

Como o Apache chegou antes de termos alguns dos aplicativos mais avançados para servidores da Web, a base de código não podia fazer o que precisava para servir sites modernos. Embora esses problemas não sejam necessariamente motivo de preocupação agora , uma solução como o Nginx funciona com a web moderna em mente.

Como tal, você descobrirá que o Apache é fantástico como um servidor fácil de configurar para aplicativos como hospedagem compartilhada. Suas integrações também o veem usado como software de servidor de desenvolvimento local, como parte da pilha Linux, Apache, MySQL e PHP (LAMP).

Os logotipos para todas as partes de uma pilha LAMP: Linux, Apache, MySQL e PHP.

Em contraste, o Nginx possui uma base de software mais madura, com maior agilidade em comparação ao Apache. É bom onde a estabilidade e a segurança são elementos-chave e fundamentais. Você descobrirá que um servidor Nginx não é tão configurável quanto outros tipos, e isso significa que você acessará menos seu núcleo.

Além disso, não é modular da mesma forma que o Apache, o que o torna menos adequado para uma situação em que você precisa realizar a personalização do servidor.

Nginx vs Apache: quão popular é cada tipo de servidor

Por muito tempo, o software de servidor era semelhante a uma corrida de um cavalo. A Apache funcionou como uma força dominante por vários anos e ainda detém uma enorme participação de mercado. Por causa disso, você descobrirá que há muitas integrações e suporte para servidores Apache, juntamente com documentação de alto nível.

Isso serve como mais um motivo para escolher o Apache e contribui para seu uso contínuo. No entanto, o Nginx é um software de servidor com uma enorme participação de mercado própria. Há um aumento lento no uso do Nginx ao longo do tempo, a ponto de agora ser a tecnologia de servidor web mais dominante no mercado, embora não muito.

Olhando para o futuro, sugerimos que o Apache terá menos uso ao longo do tempo porque o Nginx fornece muito do que os administradores de sistema precisam em um servidor web. No entanto, o LiteSpeed ​​Web Server e o Cloudflare Server estão no horizonte e vêm com uma base de usuários crescente e suporte pesado. Em alguns anos, essa comparação poderia comparar o Nginx a um desses iniciantes mais jovens.

Nginx vs Apache: Um detalhamento técnico dos recursos e funcionalidades

As próximas seções cobrirão vários aspectos técnicos do Nginx vs Apache. Embora não possamos cobrir tudo, daremos tempo suficiente às áreas principais. De qualquer forma, como eles representam os elementos centrais de ambos os tipos de servidor, você terá mais do que o suficiente para escolher o software certo para você.

1. Conexão e tratamento de solicitações

É vital saber como um servidor lida com as conexões porque essa é sua 'moeda principal'. É discutível, mas quando as pessoas procuram discutir os méritos relativos do Nginx vs Apache, o manuseio de conexão desempenha um papel importante nas percepções.

Nginx

O Nginx é 'assíncrono' e 'orientado a eventos', o que significa que pode lidar com várias solicitações ao mesmo tempo e processá-las enquanto houver recursos disponíveis. Ele gera 'processos de trabalho' para lidar com as conexões de entrada, das quais espera milhares de cada vez. Estes são os 'portadores de água' para o resto do servidor.

Por exemplo, cada processo de trabalho ouvirá eventos e conexões de processo e os adicionará a um loop contínuo. A partir daí, o servidor pode processar cada evento e removê-lo quando terminar. O fluxo de um servidor Nginx fornece escalabilidade inerente, e a arquitetura assíncrona e sem bloqueio também serve.

Apache

Por outro lado, o Apache lida com eventos um de cada vez por meio de vários Módulos de multiprocessamento (MPMs). Um administrador de sistema escolherá a arquitetura de conexão mais adequada à tarefa, das quais existem algumas.

O módulo mpm_prefork é comum. Isso gera processos filho para cada evento e processará apenas uma conexão por vez. Se o número de processos for maior que o número de requisições, você terá dificuldade em dizer a diferença entre Nginx e Apache em relação ao desempenho.

No entanto, esse tipo de situação é raro, e um servidor Apache verá um número maior de solicitações do que processos em muitas ocasiões. Além do mais, esse MPM não é bem dimensionado devido ao uso de memória.

Para aqueles que trabalham com PHP, mpm_prefork é a única maneira segura de trabalhar com o módulo interpretador mod_php . Apesar das desvantagens, este será o MPM que um desenvolvedor do WordPress escolherá se precisar implantar em um servidor Apache.

Você também verá os módulos mpm_worker e mpm_event . Eles executam uma operação semelhante e escalam melhor devido à maneira como podem gerar vários processos por coleção de threads.

Este lote de MPMs mostra como o Apache pode ser flexível, apesar das desvantagens de desempenho em alguns casos.

Processamento de solicitações para conteúdo estático versus dinâmico

Antes de prosseguirmos, devemos mencionar o conteúdo estático versus dinâmico para cada software de servidor. Você lerá que o Nginx não pode processar conteúdo dinâmico, o que pode ser motivo de preocupação. Na verdade, o Nginx não processa esse tipo de conteúdo de maneira nativa. Em vez disso, ele o enviará para um processador externo (como um cache) e aguardará que ele retorne antes de mover o conteúdo.

Para desenvolvimento, um administrador de sistema configurará uma solução como o Memcached para isso. Existem aspectos negativos nesta abordagem, nomeadamente no desempenho. No entanto, os benefícios para as despesas gerais de desempenho para cada parte da cadeia negam isso. O Nginx não precisa se preocupar em processar essas solicitações, para poder se concentrar em suas áreas de responsabilidade com maior eficiência.

O sistema MPM do Apache permite processar conteúdo estático e dinâmico sem a necessidade de outros módulos. Para conteúdo dinâmico, o Apache incorpora um processador de linguagem em cada trabalhador. É uma abordagem simples que funciona bem. Você também pode trocar os módulos se precisar fazer uma alteração.

2. Configurando o servidor

Uma das diferenças mais aparentes entre Nginx vs Apache é como você configura cada servidor. O Nginx usa uma abordagem centralizada, o que significa que um usuário não tem como configurar um servidor fora de um arquivo principal. Embora isso pareça negativo, há muitas vantagens:

  • O administrador do servidor é responsável pela segurança global, que restringe o acesso ao servidor como um todo.
  • Um servidor centralizado tem maior desempenho do que outros tipos. Isso ocorre porque o Nginx não precisará lidar com solicitações para verificar arquivos de configuração em cada diretório.
  • Há um efeito indireto aqui, pois não haverá substituições para o servidor de várias áreas, mantendo ainda mais os tempos de solicitação.

Uma maneira de um leigo saber que está usando um servidor Apache é a presença de arquivos .htaccess . Esses são arquivos de configuração que você pode adicionar em praticamente qualquer lugar em seu servidor. O Apache verificará cada elemento de um caminho para um arquivo .htaccess quando uma solicitação for feita.

Um arquivo .htaccess mostrando algumas regras de reescrita - comparação Nginx vs Apache

Isso é fantástico para usuários que desejam personalizar sua parte do servidor, mas podem significar um desastre se uma das diretivas causar problemas de desempenho ou segurança. Essa abordagem descentralizada é uma das razões pelas quais você verá o Apache sendo usado em hospedagem compartilhada. É também uma razão pela qual um sistema de gerenciamento de conteúdo (CMS) como o WordPress oferece bom desempenho em servidores Apache.

3. Solicitar interpretação

Uma grande diferença do Nginx vs Apache que não parecerá aparente é como ele interpreta as solicitações. Em poucas palavras:

  • O Nginx interpreta e mapeia as solicitações usando um Uniform Resource Identifier (URI) para cada componente.
  • O Apache também pode usar URIs para interpretar solicitações, mas é mais comum ver uma estrutura de caminho baseada em arquivo.

Como o Apache é antes de tudo um servidor web, ele usará os blocos <Directory> , <Files> ou <Location> para definir recursos. O conceito chave aqui é que tudo que o Apache 'vê' está relacionado ao servidor web, então não há ambiguidade no caminho do recurso. Pense em uma árvore de documentos, e é assim que o Apache 'visualiza' o sistema de arquivos do servidor.

Um arquivo de configuração do Apache, mostrando a proteção do sistema de arquivos para diretórios específicos - comparação Nginx vs Apache

Em contraste, o Nginx tem muitos casos de uso, como balanceador de carga, servidor proxy e servidor web. Por causa disso, as solicitações precisam vir como um URI para o Nginx processá-las. Por exemplo, o Nginx usa blocos de server e de location : o primeiro interpreta o host solicitado e o último corresponde às partes de URI posteriormente. A solicitação inteira se torna um URI.

Um arquivo de configuração Nginx - comparação Nginx vs Apache

No geral, um URI é mais flexível para o Nginx, porque pode se adaptar a qualquer função que execute. Mesmo assim, o sistema do Apache funciona, já que ele só precisa cumprir o papel de servidor web.

Nginx vs Apache: qual você deve escolher para o seu servidor em 2022

A resposta geral para Qual software de servidor devo escolher? é simples: é o que seu provedor de hospedagem oferece. Em muitos casos, você não terá escolha. Notamos que muitos hosts da web seguem o mesmo padrão que você deve combinar se quiser decidir entre Nginx vs Apache:

  • Se você deseja executar um servidor que precisa de configuração constante, ou deseja dar aos usuários uma opção de configuração, o Apache será adequado.
  • No entanto, se você deseja fornecer super desempenho, segurança sólida e deseja lidar com configurações em vez de seus usuários, o Nginx é o caminho a seguir.

Quando se trata de desempenho, o Apache pode ocupar mais memória devido à sua arquitetura inerente. O Nginx será melhor em situações de alto tráfego, especialmente se tiver que lidar com muito conteúdo estático.

Portanto, se você depende do cache para armazenar e fornecer conteúdo, o Nginx pode ser a melhor opção. No entanto, lembre-se de que o Nginx não pode fornecer conteúdo dinâmico, portanto, você sofrerá um impacto maior no desempenho dependendo da eficiência do proxy que seu servidor usa.

Ir para o topo

Conclusão

Existem muitas áreas do WordPress (e executando um site) que oferecem um número quase esmagador de opções. Esta é a natureza da besta. No entanto, não ajuda quando você precisa colocar seu site no ar rapidamente.

#Nginx vs #Apache: Qual é o servidor web certo para você?
Clique para Tweetar

A escolha do tipo de servidor é uma decisão crucial e de linha de frente sobre a qual você deve ter um cuidado extra. Nginx vs Apache é uma comparação comum porque ambos oferecem benefícios em determinadas situações.

Nossa opinião é que o Nginx pode cobrir a maioria das bases com maior desempenho, o que o torna a melhor opção para a maioria dos usuários do WordPress. É por isso que muitos dos populares hosts WordPress focados em desempenho mudaram para uma pilha de servidores totalmente Nginx, incluindo Kinsta e Flywheel.

Independentemente disso, você está seguro para usar o que seu host oferece se não tiver essa opção e a maioria dos sites do WordPress ficará totalmente bem com qualquer servidor da web.

Onde você fica em cima do muro entre Nginx vs Apache? Deixe-nos saber na seção de comentários abaixo!

Guia gratuito

5 dicas essenciais para acelerar
Seu site WordPress

Reduza seu tempo de carregamento em até 50-80%
apenas seguindo dicas simples.

Baixe o guia gratuito