Servidores Apache vs Nginx: o resumo sobre esses dois tipos de servidor
Publicados: 2022-01-03A internet é executada em uma coleção de servidores. No entanto, eles têm uma configuração diferente de uma máquina desktop padrão. Um administrador de sistema experiente ou desenvolvedor de back-end otimizará essa escolha para as necessidades que eles têm. A principal maneira de fazer isso é através de uma escolha de software de servidor. Uma comparação popular nesta área é Apache vs Nginx.
Isso ocorre por vários motivos, mas os números de uso e a longevidade são dois dos principais. O Nginx é mais novo e sem dúvida mais capaz para os padrões modernos da web. No entanto, o Apache também não tem problemas e é igualmente capaz de servir sites para milhões de usuários em todo o mundo.
Neste post, vamos fazer uma comparação do Apache vs Nginx. Veremos elementos de nível superficial, como a popularidade de ambos os tipos de servidor. No entanto, também nos aprofundaremos nos recursos técnicos e nas considerações de cada um. No final, você conhecerá os detalhes de ambos os tipos de software e qual é o melhor para o seu servidor.
O que são Apache e Nginx
Ler este artigo significa que você provavelmente entende que um servidor da Web requer software especializado para fornecer um desempenho ideal. Embora esta parte não aborde o que o software de servidor é ou faz em um sentido geral, abordaremos duas das principais soluções para o seu servidor:
- Apache. Este é um software gratuito e de código aberto que vem pré-instalado com a maioria das 'distros' do Linux. Existe desde 1995 e, devido a esses dois fatores, ocupa uma posição quase líder no mercado.
- Nginx. Embora seja um bebê relativo em comparação com outros softwares de servidor, o Nginx tem muitos usuários. Na escrita atual, é quase o primeiro conjunto com o Apache para o software de servidor mais popular (mais do que mais tarde).
Vale a pena notar que o Apache tem liderado o software de servidor por décadas e teve uma grande participação de mercado na época. No entanto, o Nginx agora é o favorito, embora não seja muito.

LEGENDA: A linha azul aqui do google Trends representa as buscas pelo Apache desde 2004, enquanto a linha vermelha refere-se ao Nginx.
Quanto ao que o Apache e o Nginx trazem para a mesa, isso pode encher vários livros sobre o assunto. No entanto, vamos tentar fazer isso em menos de 2.000 palavras – começando com o conjunto geral de recursos de ambos.
Os recursos gerais do Apache e do Nginx
Como o Apache e o Nginx são ambos softwares de servidor web HTTP, você encontrará muitas semelhanças. Por exemplo, ambos são de código aberto, o que significa que funcionarão em uma variedade de sistemas. Por extensão, ambos são flexíveis e extensíveis, mas existem objetivos diferentes para cada tipo de servidor.
No entanto, Apache vs Nginx não é uma comparação verdadeira, pois ambos os softwares abordam o processo de configuração de um servidor web de uma maneira diferente. Na realidade, ambos se adequarão melhor a diferentes aplicações.
No restante deste artigo, mostraremos isso por meio de um detalhamento dos detalhes técnicos do Apache e do Nginx. Aqui está o que vamos cobrir:
- Um detalhamento técnico de cada tipo de software de servidor, que inclui manipulação de solicitação e conexão, tecnologias de cache e muito mais.
- Configurando e estendendo o Apache, incluindo detalhes sobre seu arquivo
.htaccess
e módulos. - Como você configura o Nginx e sua extensibilidade.
Isso não parece muito a ser considerado, mas você pode descompactar cada um em várias outras subseções. Faremos exatamente isso, começando pelas diferenças técnicas.
As diferenças técnicas entre Apache e Nginx
Em um sentido geral, Apache e Nginx seguem caminhos quase únicos e exclusivos para atingir o mesmo objetivo de um servidor web ideal. Se você comparar cada um de maneira ampla, verá como eles são diferentes:
- O Apache usa uma arquitetura 'orientada a processos', enquanto o Nginx usa uma arquitetura 'orientada a eventos'.
- Enquanto ambos os tipos de arquivos estáticos de servidor (embora de uma maneira diferente), o Nginx não servidor de conteúdo dinâmico.
- Cada tipo de software interpreta as solicitações HTTP de uma maneira central diferente.
Vamos examinar alguns desses aspectos, começando com as considerações de manipulação de conexão.
Manipulação de conexão
Você verá que Apache vs Nginx dá muita importância a como cada tipo lida com conexões e solicitações. Por exemplo, o Apache usa uma abordagem orientada a processos, onde criará uma nova solicitação para cada thread usando um módulo de processamento chamado mpm_prefork
. Isso pode ser rápido se o número de solicitações for menor que o número de processos, mas houver um impacto no desempenho depois disso.
Na verdade, o Apache oferece muita flexibilidade para criar um algoritmo de manipulação de conexão para atender às suas necessidades usando mpm_prefork
, mpm_worker
e mpm_event
. Em contraste, o design do Nginx é tal que tenta mitigar os aspectos negativos de desempenho do Apache.
Ele faz isso pela maneira como gera processos de trabalho com base em eventos. Isso significa que o Nginx é ótimo para dimensionamento, pois pode gerenciar várias solicitações em um único thread.
Solicitar Interpretação
Tanto o Apache quanto o Nginx também adotam uma abordagem diferente para interpretar as solicitações que um servidor receberá. Por exemplo, o Nginx usa o Uniform Resource Identifier (URI) de uma solicitação para traduzi-la em um elemento físico do sistema de arquivos.
Você pode ver isso no formato de alguns dos blocos de configuração, como server
e location
. Eles trabalham juntos para analisar um URI e transformá-lo em algo dentro do sistema de arquivos.
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Em contraste, as raízes do Apache como um software de servidor web 'puro' significa que ele assume e age com base em que cada solicitação é um recurso no sistema de arquivos. No entanto, o Apache também pode trabalhar com URIs onde a solicitação é mais abstrata. Apesar disso, a documentação adverte contra o uso de qualquer coisa que não seja o método baseado em arquivo.
Desempenho estático x dinâmico
Quando se trata de desempenho, Apache vs Nginx é uma consideração importante para quase todos os usuários. No contexto, a comparação se resume a como cada tipo de software atende a conteúdo estático e dinâmico.
Como a arquitetura inerente do Apache funciona com o sistema de arquivos de maneira direta, é ótimo para servir conteúdo estático. No entanto, ele também processará conteúdo dinâmico no servidor, que é uma implementação semelhante que também é flexível se você precisar trocar módulos com base nos requisitos que você possui.

Em comparação, o Nginx não processa nenhum conteúdo dinâmico. É mais complicado, porque o Nginx precisa passar essas solicitações para um trabalhador ou protocolo externo. Mesmo assim, você descobrirá que há menos sobrecarga de desempenho e o Nginx pode utilizar outros protocolos com maior adaptabilidade.
Para conteúdo estático, isso pode ser tão simples quanto o Apache e, em alguns casos, uma opção de melhor desempenho. Isso ocorre porque o Nginx pode contatar o interpretador quando necessário, em vez de ser uma parte inerente do desempenho geral do software do servidor.
Modelo de configuração distribuída do Apache
Não será surpresa que o Apache e o Nginx tenham uma abordagem diferente para a configuração do servidor. Em resumo, a configuração do Apache vs Nginx depende se você pode fazer isso em um nível de diretório.
O Apache usa um modelo distribuído, o que significa que você pode configurar o servidor por diretório. Você fará isso por meio de arquivos .htaccess
. O Apache verificará cada componente do caminho do arquivo solicitado para um arquivo .htaccess
e executará as diretivas dentro dele.

Em nossa opinião, um arquivo .htaccess
é muito mais flexível do que qualquer outro sistema. É rápido de encontrar, abrir e editar. O poder ao seu alcance para realizar muitas ações poderosas é grandioso. Você também descobrirá que um servidor Apache processará um arquivo .htaccess
sempre que descobrir um, sem a necessidade de recarregar o servidor.
Também é fantástico se você precisar permitir que alguns usuários controlem aspectos de seus sites impactando toda a configuração do servidor. É por isso que os servidores Apache são um dos pilares das plataformas de hospedagem compartilhada, juntamente com seu sistema de módulos flexíveis.
Módulos do Apache
Você pode carregar e descarregar módulos de forma dinâmica usando o Apache. Isso é semelhante ao uso de plugins e temas no WordPress: a funcionalidade principal do Apache realiza as etapas fundamentais, enquanto os módulos ativos ajudam você a criar uma experiência única.
Esses módulos podem cobrir muito terreno, e há muitos disponíveis. Módulos como mod_php
podem alterar a funcionalidade principal do servidor, enquanto o popular mod_rewrite
permite realizar muitas outras tarefas:
- Restringindo endereços IP.
- Alterando a pasta inicial do seu site.
- Realização de redirecionamentos 301.
- Configurando uma página inicial padrão.
Entre o .htaccess
e o sistema de módulos dinâmicos, o Apache representa uma maneira clara para a maioria dos usuários mexer e otimizar um servidor web e um site.
Modelo de configuração centralizada do Nginx
O Nginx's adota uma abordagem centralizada para a configuração do servidor. Isso significa que há um arquivo de configuração (terminando com uma extensão .conf
). Às vezes é difícil encontrar dependendo da estrutura do seu servidor.
Isso tem algumas desvantagens claras para um proprietário de site iniciante que deseja fazer alterações em um servidor. Para sites em hospedagem compartilhada, é quase impossível configurar o servidor. Há também muito menos flexibilidade.
No entanto, também existem algumas vantagens, baseadas no desempenho. Como o Nginx tem apenas um local para um arquivo de configuração, e o Apache pode usar vários locais, haverá apenas uma pesquisa. Por extensão, haverá menos impacto no desempenho para localizar esse arquivo de configuração também.
Você também descobrirá que, como a configuração é central, os proprietários do site não terão a responsabilidade de gerenciar os aspectos relacionados à segurança. Essa é outra vantagem para a abordagem do Nginx, porque a responsabilidade pela segurança está apenas nos ombros do administrador do sistema.
Módulos do Nginx
É justo dizer que o sistema de módulos do Nginx não é nem de longe tão permissivo ou flexível quanto o Apache, apesar de oferecer o mesmo tipo de funcionalidade. Por exemplo, pegue as regras de redirecionamento do Nginx:
server { listen 80; server_name www.olddomain.com; return 301 $scheme://www.newdomain.com$request_uri; }
Isso ocorre porque você não pode carregá-los como elementos dinâmicos com o Nginx. Para voltar à nossa analogia do WordPress, é como ter que reinstalar todo o seu site para desativar um plugin.
Na superfície, isso não parece viável e parece ser um grande prejuízo. No entanto, o que lhe falta em flexibilidade, você ganha em estabilidade e funcionalidade do núcleo. Se você souber o que seu servidor precisa em tempo de compilação, poderá incluir todos esses componentes e módulos.
Há um aspecto de segurança a considerar também. Como você não trocará módulos dinâmicos dentro e fora de seu sistema, você saberá o que cada elemento faz e pode fazer. Isso torna a estrutura e a arquitetura do seu servidor claras e fáceis de manter, além de ter mais desempenho.
Por que você usaria Apache ou Nginx
Para resumir, Apache vs Nginx não é uma decisão clara. Para começar, a opinião típica de que o Nginx tem um desempenho melhor que o Apache é enganosa. Se você configurar bem um servidor Apache, ele terá o mesmo desempenho de um servidor Nginx equivalente.
O Apache é ótimo para servir conteúdo estático e dinâmico de maneira simples. Ele oferece imenso poder para aqueles que estão começando a gerenciar um servidor, flexibilidade na configuração. De um modo geral, você precisará de menos conhecimento técnico para configurar um servidor Apache do que o Nginx.
No entanto, o desempenho é onde o Nginx brilha. A configuração de sua arquitetura garante que ele possa alcançar mais por ciclo de processador do que um servidor Apache. Isso ocorre apesar da menor flexibilidade na configuração.
Em alguns casos, você pode não ter a opção de Apache vs Nginx, especialmente se você usar um host compartilhado. No entanto, se você fizer isso, a escolha dependerá de sua experiência, objetivos e necessidades.
Resumo
Sua escolha de software de servidor é importante e você tem inúmeras opções à sua disposição. Na realidade, você não vai escolher um tipo de servidor do campo esquerdo. Em vez disso, você geralmente seleciona entre dois ou três tipos. Apache vs Nginx é uma comparação frequentemente considerada, porque ambos oferecem destaque, desempenho e confiabilidade a longo prazo.
Este artigo analisou como o Apache vs Nginx se compara nessas duas frentes e muito mais. Há toda uma série de considerações técnicas a serem analisadas, e isso influenciará sua escolha mais do que a popularidade de um software de servidor específico entre a comunidade.
Você tem uma opinião sobre Apache vs Nginx? Compartilhe seus pensamentos conosco na seção de comentários abaixo!