Dans quel ordre les directives d'emplacement sont-elles déclenchées?
Réponse
Trop de publicités?À partir de la HttpCoreModule docs:
- Directives avec le "=" préfixe correspondant à la requête exactement. Si elle est trouvée, la recherche s'arrête.
- Toutes les autres directives classiques cordes. Si ce match a utilisé le "^~" préfixe, la recherche s'arrête.
- Les expressions régulières, dans l'ordre qu'ils sont définis dans le fichier de configuration.
- 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.