Migrar Apache para Nginx — os padrões de tradução e o playbook que usamos
17 de maio de 2026 · 1 min de leitura · por Sudhanshu K.
Migrações Apache-para-Nginx quase sempre travam no mesmo ponto: .htaccess. O dono da aplicação acredita que o arquivo está fazendo algo insubstituível. Nove em cada dez vezes é uma cadeia de RewriteRule que se traduz em duas linhas de config Nginx. A décima vez é uma regra mod_rewrite tão labiríntica que a resposta mais segura é consertar a aplicação no lugar.
Esta é a tabela de tradução, o runbook, e a lista de pegadinhas que usamos em cada engagement Apache-para-Nginx.
A tabela de tradução — as regras que cobrem 90 % dos casos
# Apache: RewriteRule ^(.*)$ /index.php?route=$1 [L]
location / {
try_files $uri $uri/ /index.php?route=$request_uri;
}
# Apache: Order Deny,Allow / Deny from all
location ~ /\.git { deny all; return 404; }
# Apache: AuthType Basic / AuthUserFile
location /admin/ {
auth_basic "restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}.htaccess não tem um equivalente limpo no Nginx — e isso é um feature. A configuração mora em um único lugar, não espalhada por cada diretório do seu webroot.
O artigo completo cobre:
- Os padrões de
mod_rewriteque mapeiam diretamente, e os que precisam de repensar - O wiring de PHP-FPM — o bloco FastCGI que copiamos em cada site
- Peculiaridades de logging Apache vs Nginx (diferenças de formato combined, níveis de log de erro)
- Padrões de sticky-session e afinidade por cookie em load-balancing
- O cutover de dual-run (Apache em :8080, Nginx em :443, tráfego moldado no edge)
- O smoke test de 24 horas que rodamos após cutover antes de declarar pronto
Fale conosco se quiser um segundo par de olhos no seu.
Full article available
Read the full article