Confronto do lado do servidor: Apache vs NGINX

Publicados: 2020-10-01

Os servidores da Web estão no centro da Internet. Sem o software de servidor da web, como Apache e NGINX, a web não seria nada como o que vemos hoje. No entanto, eles não são intercambiáveis. Para saber qual dessas duas opções - Apache versus NGINX - é a melhor para você, é necessário entender como elas funcionam.

Neste artigo, falaremos sobre o que são servidores da web e como eles funcionam e apresentaremos o Apache e o NGINX. Em seguida, compararemos o Apache com o NGINX em termos das principais diferenças e examinaremos seus prós e contras.

Vamos lá!

O que é um servidor web?

Em suma, um servidor da web é um computador dedicado a executar software de servidor, como Apache ou NGINX. Um servidor da web armazena arquivos do site e pode processar solicitações de entrada para acessá-los.

É o software servidor web o responsável por esta última tarefa, que é uma responsabilidade importante. Para sites populares, o software que você usa pode precisar lidar com um grande número de solicitações em um curto período de tempo, portanto, deve estar à altura da tarefa. Tanto o NGINX quanto o Apache são capazes de dimensionar e lidar com um grande número de solicitações. No entanto, a maneira como as duas opções de servidor funcionam é diferente no nível do núcleo.

O software de servidor da Web funciona junto com vários outros componentes para atender a sites e aplicativos modernos. Por exemplo, para configurar o WordPress em um servidor, você precisa dos seguintes componentes:

  • Servidor Web com suporte HTTPS: pode ser Apache, NGINX ou algumas outras opções.
  • PHP: WordPress é construído na linguagem PHP, então você precisa dele para executar o Sistema de Gerenciamento de Conteúdo (CMS).
  • Software de banco de dados: pode ser MySQL ou MariaDB.

Neste artigo, vamos nos concentrar apenas no software de servidor da web. No entanto, é importante entender que o software não funciona no vácuo. Em alguns casos, você pode até configurar servidores web como Apache e NGINX para trabalharem juntos . Uma maneira de os sites fazerem isso é configurando o NGINX para funcionar como um proxy reverso enquanto usa o Apache como o software de servidor principal. As aplicações à sua disposição são claramente variadas e abundantes.

Uma introdução ao Apache

A página inicial do Apache.

Por muito tempo, o Apache foi a opção de servidor da web padrão para a maioria dos sites. O software existe desde 1995 quando Robert McCool apresentou o Apache HTTP Server. Alguns anos depois, a Apache Software Foundation assumiu a manutenção e o Apache tornou-se um software de código aberto.

O Apache conquistou grande popularidade porque veio instalado junto com várias distribuições importantes do Linux. Quando se trata de servidores web, a prevalência do Linux tornou o Apache a escolha de fato por anos.

O nome Apache está tão arraigado no Linux que o Sistema Operacional (SO) usa o comando httpd para seu processo de servidor (algo encontrado dentro do próprio Apache). No entanto, o Apache não é o único grande nome quando se trata de servidores web.

Uma introdução ao NGINX

A página inicial do NGINX.

O NGINX foi projetado por Igor Sysoev para ser capaz de lidar com o que é conhecido como o “problema C10K”. Trata-se de otimizar uma rede para ser capaz de lidar com até 10K conexões simultâneas. Em outras palavras, o NGINX foi criado com o máximo de escalabilidade em mente.

O software de código aberto foi lançado em 2004 e agora existem dois tipos de licença disponíveis para ele. Você tem a versão de código aberto e o NGINX Plus, que é uma solução corporativa que inclui suporte profissional e outros recursos.

Em sua infância, a maioria dos sites usava o NGINX para lidar apenas com solicitações estáticas devido à dificuldade de instalação percebida em comparação com o Apache. A participação de mercado da NGINX tem crescido constantemente ao longo dos anos.

De acordo com algumas pesquisas, o NGINX ultrapassou o Apache como o software de servidor da web mais popular do mundo. Outros números colocam-no diretamente nos calcanhares do Apache:

Estatísticas sobre a popularidade do software de servidor da web.

Fonte da imagem: W3Techs.

O que é verdade é que o NGINX é muito mais popular do que o Apache entre os sites mais populares da web. Isso ocorre porque o NGINX tem uma vantagem inegável quando se trata de escalabilidade, que é fundamental para sites que recebem grandes quantidades de tráfego.

Além disso, o NGINX pode obter “dupla função” como um proxy reverso ou balanceador de carga, se você não quiser usá-lo como um servidor web. Em outras palavras, ele pode cumprir muito mais funções do que o Apache.

No entanto, isso não quer dizer que o NGINX deva ser sua escolha padrão se você estiver pensando em trocar de servidor. Ao longo das próximas seções, analisaremos o que torna cada software único.

Apache vs NGINX: 3 principais diferenças

Antes de podermos falar sobre qual solução de servidor é a melhor opção para você, precisamos analisar o que os torna diferentes. Vamos começar falando sobre o tratamento de solicitações relacionadas ao Apache versus NGINX.

1. Solicitar gerenciamento

Esteja avisado - é aqui que as coisas ficam um pouco mais técnicas. O Apache usa o que chama de Módulos de Multiprocessamento (MPMs) para lidar com conexões. O software permite que você escolha entre três tipos de MPMs:

  1. mpm-prefork : este módulo cria processos de thread único para lidar com cada solicitação. Cada “filho”, por sua vez, só pode lidar com uma única conexão.
  2. mpm_worker : Este módulo pode iniciar processos multi-threaded, com cada thread sendo capaz de gerenciar uma conexão.
  3. mpm_event : Na maior parte, este módulo funciona da mesma forma que mpm_worker , mas é otimizado para manter as conexões ativas .

Um aspecto exclusivo do Apache é que ele permite que você escolha qual módulo deseja usar e troque-os conforme necessário. Por padrão, o Apache usa o módulo mpm-prefork , que funciona muito bem para um baixo número de conexões simultâneas. O módulo mpm_worker é melhor quando se trata de dimensionamento, mas requer recursos de servidor adicionais.

Em contraste, o NGINX usa o que chama de abordagem “orientada a eventos”. O software usa processos multi-threaded, com cada thread sendo capaz de lidar com conexões múltiplas.

Além do mais, o NGINX lida com solicitações de entrada de forma assíncrona. Resumindo, isso significa que o NGINX pode gerenciar mais solicitações com menos recursos do servidor, tornando-o mais eficiente nesse aspecto específico.

2. Configuração do servidor

O Apache usa arquivos .htaccess para definir regras específicas de como trata as solicitações de entrada. Esses arquivos incluem tudo, desde regras de redirecionamento a limites de memória e muito mais.

Usando o Apache, você pode configurar arquivos .htaccess individuais para cada diretório em sua árvore de servidor. Para dar um exemplo, se você configurar um servidor compartilhado, poderá habilitar cada site hospedado nele para configurar seus próprios arquivos .htaccess .

A desvantagem desse alto nível de flexibilidade é que cada arquivo .htaccess que você encontra ao longo de um caminho de solicitação precisa ser interpretado separadamente. Isso significa que as solicitações podem demorar mais para serem executadas.

O NGINX não oferece o mesmo nível de flexibilidade quando se trata de configuração. Em vez de arquivos de configuração de nível direto, você tem um arquivo principal que governa tudo.

3. Módulos

Módulos são complementos que você pode usar junto com o software de servidor de sua escolha para estender sua funcionalidade padrão. Considerando a idade e a popularidade do Apache, não deve ser surpresa que ele tenha uma vantagem sobre o NGINX no que diz respeito à seleção de módulos.

O Apache não apenas oferece mais módulos, mas tende a ser mais fácil encontrar documentação e tutoriais sobre como usá-los. Além disso, o Apache permite que você instale, habilite e desabilite os módulos à vontade, fornecendo um alto grau de flexibilidade.

NGINX não oferece a mesma vantagem. Para usar módulos, você precisa compilá-los no núcleo NGINX. Além disso, você não pode desativar os módulos depois de compilados, tornando muito mais difícil a troca de opções.

É importante observar que o NGINX Plus inclui um recurso de módulo dinâmico que permite desabilitar e habilitar os módulos à vontade. No entanto, mesmo com o Plus, você ainda precisa compilar esses módulos com o núcleo NGINX antes de usá-los.

Embora a documentação e a biblioteca de módulos do NGINX estejam crescendo em um ritmo constante, eles ainda não podem se igualar ao Apache em termos de volume. Considerando como a NGINX continua ganhando mais participação de mercado, no entanto, isso provavelmente mudará em um futuro próximo.

Os prós e contras do Apache vs NGINX

Agora, você entende as principais diferenças entre o Apache e o NGINX. Vamos agora apresentar uma breve análise dos prós e contras de cada software.

Apache

Para começar, vamos falar sobre os principais benefícios de usar o Apache:

  • Pode ser mais fácil de instalar e configurar
  • Você obtém um controle mais granular sobre a configuração do seu servidor graças aos arquivos .htaccess
  • A seleção do módulo é melhor e você pode habilitar e desabilitar os módulos à vontade
  • Você pode decidir como lidar com as solicitações usando diferentes módulos

A principal desvantagem de usar o Apache em comparação com o NGINX é que o último simplesmente escala melhor. Se você ainda está no estágio de crescimento do seu site, o Apache deve ser mais do que suficiente para lidar com o tráfego.

No entanto, em algum momento, você pode precisar considerar a atualização da pilha do servidor se o seu site se tornar muito bem-sucedido. Isso pode significar mudar para o NGINX ou usá-lo como um proxy reverso para o seu servidor web Apache.

NGINX

O NGINX tem duas vantagens claras quando se trata do Apache - desempenho e escalabilidade. Para ser mais específico, o NGINX é melhor quando se trata de:

  • Lidar com um grande número de solicitações simultâneas
  • Obtendo melhor desempenho com menos recursos de hardware
  • Veicular conteúdo estático mais rápido

Esta última parte explica porque tantas pessoas optam por usar o NGINX como uma solução de proxy reverso. Apesar de todos os benefícios relacionados ao desempenho, o NGINX apresenta falhas.

Embora ter um único arquivo de configuração se traduza em tempos de solicitação menores, também significa que o NGINX é menos flexível do que o Apache. Isso se aplica a módulos também, uma vez que a versão de código aberto do NGINX força você a compilar módulos para usá-los - e você não pode desabilitá-los. Na prática, isso significa que configurar o NGINX para funcionar conforme necessário pode ser muito mais complexo do que usar o Apache.

O principal motivo para usar o NGINX é se o desempenho é sua principal preocupação. Em algum ponto, os sites populares precisam usar grandes armas para lidar com o tráfego massivo sem tempos de inatividade, longos tempos de carregamento e muito mais. Além disso, como o NGINX pode permitir que você obtenha melhores resultados de desempenho com menos recursos de hardware, pode ser uma opção mais econômica.

Conclusão

Mudar de servidor ou software de servidor é sempre uma grande decisão. Como tal, o ideal é que você queira usar a solução de servidor que vai aderir a longo prazo.

Escolher entre Apache e NGINX não é tão claro quanto pode parecer. Em muitos casos, a decisão não dependerá de você, já que seu host decidirá qual software usar. Em um nível prático, você precisará fazer sua pesquisa e descobrir qual opção um host da web usa antes de se comprometer com eles.

Você tem alguma dúvida sobre como escolher entre o Apache e o NGINX? Vamos falar sobre eles na seção de comentários abaixo!

Imagem em miniatura do artigo por ProStockStudio / shutterstock.com