Validador de Configuração Nginx
Cole um nginx.conf e detecte erros de sintaxe, diretivas mal posicionadas e falhas de segurança comuns — antes de recarregar o nginx.
Arraste um arquivo .conf aqui, ou cole o texto de configuração acima.
Tudo é executado no seu navegador — a sua configuração nunca é enviada a nenhum servidor.
Cole uma configuração do nginx acima (ou carregue o exemplo) e os resultados da verificação aparecerão aqui.
Usa o motor de expressões regulares do JavaScript, não o motor PCRE real do nginx — muito parecido, mas não idêntico (sem quantificadores possessivos/grupos atómicos).
Como pegar erros de configuração do nginx antes de chegarem à produção
Um nginx.conf quebrado costuma se manifestar de duas formas desagradáveis: o `nginx -t` se recusa a recarregar com um erro enigmático de número de linha ou, pior, o `reload` mantém em silêncio a configuração antiga (funcionando) na memória enquanto a nova, quebrada, fica no disco — e nada parece errado até a próxima reinicialização completa. As duas situações podem ser evitadas se você pegar o mesmo tipo de erro mais cedo, ainda durante a edição.
O erro mais comum em um nginx.conf no mundo real não é nada exótico: é um ponto e vírgula esquecido. Como a gramática do nginx só se importa com `;`, `{` e `}` (e não com quebras de linha), a falta de um `;` não gera um claro "linha 12: esperado ;" como na maioria dos analisadores modernos; em vez disso, o nome e os argumentos da diretiva seguinte são absorvidos como argumentos extras da anterior, às vezes sem nenhum erro até que algo adiante se comporte de modo estranho. A heurística de quebra de linha desta ferramenta vigia justamente esse padrão — o nome de uma diretiva conhecida aparecendo no meio da lista de argumentos, em uma nova linha do código — e avisa antes que vire um chamado de suporte.
A posição das diretivas é a segunda armadilha comum: `proxy_pass` só faz sentido dentro de um bloco `location` (ou `if`), `listen`/`server_name` só dentro de `server`, e assim por diante. Só que o próprio analisador do nginx nem sempre rejeita uma diretiva só por estar em um lugar incomum, e as mensagens de erro apontam para o registro interno de diretivas do nginx, não para "você aninhou isto errado". Este validador consulta diretamente a tabela de diretivas por contexto, de modo que um `proxy_pass` esquecido no nível `http` (fora de qualquer `server`/`location`) é apontado com a linha exata, e não apenas com um "a configuração falhou ao carregar".
Além da sintaxe, algumas escolhas pequenas de configuração têm consequências desproporcionais para a segurança: deixar `server_tokens` no valor padrão (`on`) entrega a versão exata do nginx em todo cabeçalho de resposta e página de erro padrão, o que é reconhecimento grátis para quem procura uma CVE específica da versão; e usar a variável `$uri`, já decodificada, dentro de `return`/`rewrite`/`add_header` (em vez da `$request_uri`, bruta) pode permitir que um atacante injete caracteres no destino de um redirecionamento em certas configurações. Nenhuma das duas coisas quebra nada de forma visível nos testes normais, e é justamente por isso que merecem uma verificação dedicada, em vez de depender de notá-las a olho em uma configuração de 200 linhas.
Perguntas frequentes
Isto substitui o `nginx -t`?
Não. O `nginx -t` é a única forma de checar sua configuração contra a versão exata do nginx e os módulos realmente instalados no servidor, e tem a palavra final antes de um reload. Este validador pega o mesmo tipo de erro (sintaxe, diretivas no lugar errado, alguns problemas de segurança) antes mesmo de você chegar a um servidor com nginx — útil ao editar localmente, em uma etapa de CI ou quando você ainda não tem acesso ao shell da máquina de destino.
A lista de verificações de segurança é completa?
Não — ela cobre um conjunto pequeno e deliberado de verificações (falta de `server_tokens off;`, `autoindex on;` e `$uri` usado onde `$request_uri` é mais seguro), inspiradas de forma livre no Gixy, o auditor de configurações nginx de código aberto. Não substitui o Gixy nem uma auditoria de segurança completa.
Por que o testador de regex se comporta de forma um pouco diferente do nginx real?
A correspondência de `location ~` e `location ~*` no nginx usa PCRE (a biblioteca embutida no binário do nginx). Esta ferramenta roda inteiramente no navegador, então usa o motor RegExp nativo do JavaScript — os dois são muito parecidos em padrões comuns, mas recursos exclusivos do PCRE, como quantificadores possessivos ou grupos atômicos, não se comportam da mesma forma aqui.
Minha configuração sai do navegador em algum momento?
Não. A análise, a validação e os dois simuladores rodam com JavaScript puro nesta aba. Nada é enviado, registrado ou transmitido — você pode até desconectar da internet depois que a página carregar, que ela continua funcionando.
Ferramentas relacionadas
- Formatador e validador JSON
- Gerador de código QR
- Decodificador JWT
- Codificador/Decodificador Base64
- Testador de Expressões Regulares
- Seletor de cores e gerador de paletas
- Conversor CSV ↔ JSON
- Conversor de JSON para Excel
- Validador YAML do Kubernetes
- Formatador e Validador de SQL
- Formatador de código
- Validador de padrões ISO