Apache vs nginx: diferenças e como converter a configuração

Apache vs nginx

Apache vs nginx: processos, .htaccess e conversão de config | We.Inc

Apache vs nginx comparados em como lidam com conexões, .htaccess por diretório versus config central, reloads e proxy, com um conversor para regras de rewrite comuns.

Os dois são servidores web open source maduros. O Apache carrega módulos em um modelo de processos à sua escolha (prefork, worker ou event) e deixa cada diretório sobrescrever configurações com arquivos .htaccess. O nginx roda um processo master e alguns workers orientados a eventos, lê apenas a config central e costuma ficar na frente de servidores de aplicação como reverse proxy.

Apache e nginx lado a lado

Escolher entre os dois é principalmente uma questão de onde fica a configuração e de quem pode alterá-la. Esta página deixa de lado alegações de benchmark, que dependem totalmente da carga e do ajuste, e foca nas diferenças que você encontra ao manter um site: como cada servidor lida com conexões, por que o .htaccess existe e como converter as regras de rewrite que você já tem. Use o conversor para ver a versão nginx de uma regra Apache conhecida.

Perguntas frequentes

O nginx é mais rápido que o Apache?

Depende da tarefa e do ajuste, então desconfie de qualquer número isolado. Os workers orientados a eventos do nginx foram feitos para manter muitas conexões ociosas com baixo custo. O MPM event do Apache diminuiu essa diferença usando também polling thread-safe. Meça a sua própria carga antes de trocar só por velocidade.

O nginx aceita arquivos .htaccess?

Não. O nginx não tem arquivos de sobrescrita por diretório, então as regras de um .htaccess precisam ir para a configuração do servidor e o nginx precisa ser recarregado. É uma troca deliberada: nenhuma busca de arquivo a cada requisição, mas só quem tem acesso à config principal pode mudar as regras.

Dá para converter .htaccess para nginx automaticamente?

Redirecionamentos e fallbacks simples se convertem sem problema, como mostra o conversor desta página. Cadeias longas de RewriteCond com flags como [P] ou variáveis de ambiente precisam de uma pessoa para lê-las, porque o nginx expressa a mesma intenção com blocos de construção diferentes.

Qual devo escolher para um site WordPress ou PHP?

Se a sua hospedagem só dá acesso aos arquivos, o Apache com .htaccess é o que permite mudar regras. Em um servidor que você controla, os dois funcionam com PHP-FPM; no nginx você escreve o fallback de URLs amigáveis uma vez com try_files no server block.

Como recarregar a config sem derrubar conexões?

No nginx, rode nginx -s reload: o master verifica a nova config, inicia novos workers e pede aos antigos que terminem com calma. No Apache, apachectl graceful faz o equivalente para os processos filhos.

Modelos de processo em termos simples

Por que o .htaccess importa

O mesmo site nos dois servidores

Virtual host do Apache

Arquivos estáticos de uma pasta mais um fallback de SPA, configurados no vhost para dispensar o .htaccess.

Server block do nginx

O mesmo comportamento: pasta raiz, fallback com try_files e uma página de erro personalizada.

Forçar HTTPS

O Apache testa a flag HTTPS; o nginx usa um server separado na porta 80 que só redireciona.

Mandar o domínio sem www para o www

A documentação do nginx recomenda um server block dedicado com return em vez de um if no host.

Fallback de single-page app

Serve arquivos reais quando existem e index.html para qualquer outro caminho.

Redirecionar uma página antiga

O Redirect do mod_alias não precisa do motor de rewrite; o nginx casa o caminho exato com location =.

Página 404 personalizada

Os dois apontam o erro para uma página do mesmo site.

Proxy de /api para um servidor de aplicação

O Apache precisa de mod_proxy e mod_proxy_http carregados, com barras finais iguais nos dois argumentos; o proxy do nginx já vem embutido.

Bloquear arquivos ocultos como .git

Impede que arquivos cujo nome começa com ponto sejam servidos.

Adicionar um header de segurança

Com always, os dois servidores adicionam o header também às respostas de erro, não só às de sucesso.

Filtrar tarefas

https, proxy, 404...

Apache (.htaccess ou virtual host)

nginx (server block)

Nenhuma tarefa corresponde a esse filtro.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site