Gerador de Configuração Nginx

Tipo de site
Próximo

Escrever configurações Nginx do zero significa lembrar de cada proxy_set_header, cada tipo MIME gzip e a diferença entre try_files $uri/ /index.php?$args e a versão que quebra sutilmente o roteamento. Este gerador solicita o domínio, upstream, manipulador PHP e caminhos SSL, e então gera um bloco de servidor com padrões sensatos para TLS, HTTP/2, cache estático e compressão.

Como gerar seu bloco de servidor

  1. 1

    Escolha um modelo

    Site estático, PHP-FPM (Laravel, WordPress), proxy reverso Node.js ou um simples redirecionamento 301.

  2. 2

    Insira o domínio

    Inclua a lista de server_name: tipicamente variantes www e não-www.

  3. 3

    Defina os detalhes do SSL

    Aponte para seus arquivos fullchain e privkey, ou pule para usar apenas HTTP.

  4. 4

    Ajuste o upstream

    Porta, caminho do socket ou URL de backend para casos de proxy_pass.

  5. 5

    Copie e implemente

    Coloque a saída em /etc/nginx/sites-available, execute nginx -t e recarregue.

Como deve ser um bom bloco de servidor

Um host virtual Nginx moderno geralmente tem estas partes:

Seção Propósito
listen 443 ssl http2 Aceitar HTTPS com HTTP/2 habilitado
ssl_certificate + ssl_certificate_key Aponte para o material TLS
ssl_protocols TLSv1.2 TLSv1.3 Descartar versões antigas do TLS
gzip on + tipos Comprimir texto/HTML/JSON/JS/CSS dinamicamente
Cabeçalhos expires para ativos estáticos Reduzir viagens de ida e volta de visitantes repetidos
try_files Roteie para um controlador frontal (PHP, Laravel, etc.)
HSTS + cabeçalhos de segurança Mantenha o navegador honesto sobre TLS

Essenciais do proxy reverso

Para aplicativos Node.js, Python, Ruby rodando atrás do Nginx:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Esquecer X-Forwarded-For é a maneira clássica de perder os IPs reais dos clientes nos logs do seu aplicativo.

Erros comuns

  • Falta de fallback server_name. O Nginx usa o primeiro bloco de servidor como padrão se nenhum nome corresponder. Coloque um bloco catch-all server_name _ retornando 444 para evitar ataques de cabeçalho de host.
  • Ordem errada do certificado. O arquivo ssl_certificate deve ser fullchain (folha + intermediários), não apenas a folha.
  • Cache excessivo. Enviar expires 1y em /index.html arruinará implantações. Em vez disso, versione as URLs dos ativos estáticos.
  • Sem teste antes do recarregamento. Sempre execute nginx -t antes de systemctl reload nginx: um erro de sintaxe tira o site do ar.

Perguntas frequentes

HTTP/2 é estável e suportado universalmente no Nginx 1.25+. HTTP/3 (QUIC) está disponível no Nginx 1.25+ como experimental. Para uma configuração de produção em 2025, habilite HTTP/2 e opcionalmente adicione HTTP/3 com as diretivas http3 e quic.

A convenção é /etc/ssl/certs/ para cadeias públicas e /etc/ssl/private/ para chaves. O Let’s Encrypt coloca tudo em /etc/letsencrypt/live/domain/. Use o que sua ferramenta de renovação espera.

Sim, para a maioria dos sites. Adicione um bloco de servidor separado na porta 80 que retorna 301 https://$host$request_uri. Combinado com HSTS, o bloco HTTP raramente será acessado após a primeira solicitação.

Execute sudo nginx -t para analisar a configuração sem recarregar. Se imprimir “syntax is ok” e “test is successful”, recarregue com sudo systemctl reload nginx. Nunca use restart em produção: o reload aplica a nova configuração sem interromper o tráfego.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas