Dans quel ordre les directives de localisation se déclenchent-elles?
Dans quel ordre les directives de localisation se déclenchent-elles?
Réponses:
À partir de la documentation du module principal HTTP :
Exemple 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 déroutant, voici une explication plus longue .
/
et /documents/
correspondent toutes deux à la demande /documents/index.html
, mais la dernière règle a la priorité car c'est la règle la plus longue.
Il tire dans cet ordre.
=
(exactement)
location = /path
^~
(match avant)
location ^~ /path
~
(expression régulière sensible à la casse)
location ~ /path/
~*
(expression régulière insensible à la casse)
location ~* .(jpg|png|bmp)
/
location /path
Il existe maintenant un outil de test en ligne pratique pour la priorité de localisation :
test de priorité de localisation en ligne