Revisar blocos Nginx e regras location

Cole uma configuração para revisar e teste um caminho contra as regras location. O comparador aplica a ordem do Nginx: correspondência exata, depois o prefixo mais longo e por fim as expressões regulares; o caminho é normalizado como no Nginx.

Funciona localmente no seu navegador
Esta ferramenta processa todos os dados localmente no seu navegador.
Configuração NginxCole um ou mais blocos server; nenhum host é contatado.

Como revisar um bloco Nginx e um caminho

O Nginx decide qual bloco location atende a uma requisição numa ordem fixa: primeiro a correspondência exata com =, depois o prefixo mais longo e por fim as expressões regulares na ordem em que aparecem. O comparador segue essa ordem e normaliza o caminho como o Nginx, então a resposta é a regra que o Nginx usaria.

O relatório continua sendo um apoio de revisão. Ele lê apenas o texto colado, e o nginx -t na máquina que serve o site segue sendo a referência sobre o arquivo carregar ou não.

  1. Cole um ou mais blocos server, ou clique em Carregar exemplo para partir de uma configuração que funciona.
  2. Clique em Verificar configuração e leia o relatório; a análise não sai deste navegador.
  3. Digite um caminho como /api/projects/42 e clique em Encontrar location para ver qual regra responde e por quê.
  4. Altere o bloco, verifique de novo e confirme o arquivo com nginx -t antes de recarregar o servidor.

Precedência de location, aspas e prévia do caminho

Como o Nginx escolhe um location

Uma correspondência exata como location = /health ganha na hora. Sem ela, o prefixo correspondente mais longo é memorizado; quando esse prefixo usa ^~, as expressões regulares são ignoradas e o prefixo atende a requisição.

Sem ^~, as expressões regulares são testadas na ordem em que aparecem e a primeira que casar vence; se nenhuma casar, o prefixo memorizado atende. Blocos location aninhados dentro de um prefixo são buscados do mesmo jeito, e por isso um ^~ ou uma expressão regular aninhados podem passar na frente de uma regra escrita mais abaixo.

O que o relatório verifica

O relatório aponta chaves ou aspas desequilibradas, ausência de bloco server, server_name faltando, listener na porta 80 sem um redirecionamento return 30x evidente, proxy_pass sem proxy_set_header Host e proxy_pass sem X-Forwarded-For ou X-Forwarded-Proto. A porta 80 é reconhecida nas formas 80, *:80, 0.0.0.0:80 e [::]:80.

Ele também avisa sobre padrões location com chaves sem aspas: o Nginx não carrega um arquivo como location ~ ^/p/[0-9]{3}$ { } e falha com unknown directive. Quando as verificações passam, o relatório diz isso em vez de inventar um problema.

Aspas, escapes e a prévia do caminho

Coloque a expressão regular entre aspas quando ela tiver chaves: location ~ "^/p/[0-9]{3}$" { } carrega, a forma sem aspas não. A prévia decodifica escapes de porcentagem, junta barras repetidas e resolve . e .., então /a//b, /a/./b e /a/x/../b chegam a location = /a/b.

A comparação diferencia maiúsculas, exceto nas regras com ~*. Blocos nomeados (location @nome) aparecem na lista mas nunca são escolhidos a partir de um caminho, e diretivas como rewrite, try_files e error_page não são seguidas; leia o resultado como a primeira etapa de roteamento que o Nginx faz.

Ferramentas recentes: