262 votes

Priorité d'emplacement Nginx

Dans quel ordre les directives d'emplacement sont-elles déclenchées?

430voto

Martin Redmond Points 2084

À partir de la HttpCoreModule docs:

  1. Directives avec le "=" préfixe correspondant à la requête exactement. Si elle est trouvée, la recherche s'arrête.
  2. Toutes les autres directives classiques cordes. Si ce match a utilisé le "^~" préfixe, la recherche s'arrête.
  3. Les expressions régulières, dans l'ordre qu'ils sont définis dans le fichier de configuration.
  4. Si #3 a abouti à un match, ce résultat n'est utilisé. Sinon, le match de #2 est utilisé.

Exemple à partir de la documentation:

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 ] 
}

Si c'est encore confuse, voici une explication plus longue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X