Expressões Regulares + Nginx

Diretivas que aceitam Expressões Regulares

Módulo Diretiva Match
HTTP Core location ~ ER { … } n
location ~* ER { … } i
server_name ~ ER; i
HTTP FastCGI fastcgi_split_path_info ER; n
HTTP Gzip gzip_disable "ER"; i
HTTP Map map … { …; ~ER 1; } n
map … { …; ~*ER 1; } i
HTTP Proxy proxy_cookie_domain ~ER texto; i
proxy_cookie_path ~ER texto; n
proxy_cookie_path ~*ER texto; i
proxy_redirect ~ER texto; n
proxy_redirect ~*ER texto; i
HTTP Referer valid_referers ~ER; i
HTTP Rewrite if ($var ~ ER) { … } n
if ($var ~* ER) { … } i
if ($var !~ ER) { … } !
if ($var !~* ER) { … } !i
rewrite ER texto; n
HTTP SSI <!--# if expr="$var = /ER/" --> n
<!--# if expr="$var != /ER/" --> !
HTTP Upstream match nome { campo ~ ER; } n
match nome { campo !~ ER; } !
Stream Upstream match nome { expect ~ ER; } n
match nome { expect ~* ER; } i
Legenda: (n)ormal, (i)gnorecase, (!)negado

Dicas

  • O Nginx usa PCRE.
  • Sempre use aspas para proteger a regex.
  • Casamentos parciais são sempre válidos.
  • As diretivas principais com suporte a regex são: server_name, location, if e rewrite.
  • Use grupos nomeados na regex para criar variáveis que podem ser utilizadas em outras diretivas.

Links

  • Server names Artigo que demostra os tipos de valores que podem ser usados na diretiva server_name, e como eles são processados. É importante entender bem as regras de precedência entre casamentos exatos, com asterisco e com expressões regulares.

  • How nginx processes a request Artigo resumido que explica todos os passos que o Nginx faz ao receber uma requisição. É importante entender bem as regras de precedência entre casamentos exatos, de prefixo e com expressões regulares.

  • Understanding Nginx Server and Location Block Selection Algorithms Mesma proposta do artigo anterior, porém este é um guia completo, muito bem escrito, que explica em detalhes o funcionamento do Nginx ao processar uma requisição. Bom para entender como funciona o algoritmo, e assim poder escrever os blocos server e location com confiança.

  • Converting rewrite rules Guia rápido com algumas dicas de como converter para o Nginx as regras do mod_rewrite do Apache.

— EOF —

Aprenda mais sobre Expressões Regulares