Prioridade na localização do Nginx

186

Em que ordem as diretivas de localização são acionadas?

user650505
fonte

Respostas:

352

Nos documentos do módulo principal HTTP :

  1. Diretivas com o prefixo "=" que correspondem exatamente à consulta. Se encontrado, a pesquisa é interrompida.
  2. Todas as diretivas restantes com sequências convencionais. Se essa correspondência usou o prefixo "^ ~", a pesquisa é interrompida.
  3. Expressões regulares, na ordem em que são definidas no arquivo de configuração.
  4. Se o nº 3 produziu uma correspondência, esse resultado é usado. Caso contrário, a correspondência do nº 2 é usada.

Exemplo da documentação:

location  = / {
  # matches the query / only.
  [ configuration A ] 
}
location  / {
  # matches any query, since all queries begin with /, but regular
  # expressions and any longer conventional blocks will be
  # matched first.
  [ configuration B ] 
}
location /documents/ {
  # matches any query beginning with /documents/ and continues searching,
  # so regular expressions will be checked. This will be matched only if
  # regular expressions don't find a match.
  [ configuration C ] 
}
location ^~ /images/ {
  # matches any query beginning with /images/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration D ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # matches any request ending in gif, jpg, or jpeg. However, all
  # requests to the /images/ directory will be handled by
  # Configuration D.   
  [ configuration E ] 
}

Se ainda é confuso, aqui está uma explicação mais longa .

Martin Redmond
fonte
4
Observe que as regras " /e" /documents/correspondem à solicitação /documents/index.html, mas a última regra tem precedência, pois é a regra mais longa.
Arrakis_sun
69

Dispara nesta ordem.

  1. = (exatamente)

    location = /path

  2. ^~ (partida direta)

    location ^~ /path

  3. ~ (expressão regular diferencia maiúsculas de minúsculas)

    location ~ /path/

  4. ~* (expressão regular sem distinção entre maiúsculas e minúsculas)

    location ~* .(jpg|png|bmp)

  5. /

    location /path

Don Dilanga
fonte
3
^ ~ (partida direta) muito importante
iwind 21/01