À quelle variable nginx l'emplacement correspond-il ?
$request_uri
Quels sont les types de lieux correspondants ?
=
commençant par
indique une correspondance exacte ^~
au début, notez qu'il ne s'agit pas d'une expression régulière (c'est une correspondance de chaîne avec une priorité élevée) – elle est destinée à avoir la priorité sur la correspondance d'expression régulière. Si l'emplacement correspond le mieux, la détection des expressions régulières n'est plus effectuée.
~
commence par une correspondance régulière sensible à la casse ;
~*
commence par une correspondance régulière insensible à la casse
!~ && !~*
: indique une correspondance sensible à la casse. Normal sans correspondance et sans correspondance régulière sans distinction de casse
Correspondance de chaîne
/Correspondance universelle, s'il n'y a pas d'autre correspondance, toute demande correspondra
Ordre de recherche d'emplacement
Première correspondance exacte =
Deuxième correspondance ^~
Suivez ensuite l'ordre des fichiers de configuration Effectuez une correspondance régulière
Enfin, remettez/effectuez la correspondance générale
Remarque :
Lorsqu'une correspondance réussit, arrêtez immédiatement la correspondance et suivez la demande de traitement de la règle de correspondance actuelle
Remarque spéciale : la correspondance de chaîne est recherchée en premier, mais seule la correspondance la plus longue est enregistrée, puis la recherche de correspondances régulières se poursuit s'il y a une correspondance régulière, la correspondance régulière est trouvée. , la correspondance régulière est atteinte. (Si ^~ est la correspondance la plus longue, elle sera frappée directement et cessera de rechercher des expressions régulières)
Correspondance exacte
location = /images/test.png { echo 'config1'; } location /images/test.png { echo 'config2'; } location \/images\/test\.png$ { echo 'config3'; }
Qu'est-ce qui sera affiché si http://127.0.0.1/images/test.png
est demandé en ce moment Drap de laine ?
Sortie config1
, sans aucun doute, la correspondance exacte a la plus haute priorité !
Cas particulier de correspondance exacte
location = / { index index.html; } location / { echo 'config2'; }
C'est l'entrée http://127.0.0.1
Qu'est-ce qui sera sorti ?
est le résultat de config2. Pourquoi la priorité de la correspondance exacte ne fonctionne-t-elle pas ?
Oui, la correspondance exacte fonctionne toujours. Lors de la demande d'un répertoire (pas d'un fichier spécifique), nginx dirigera en interne la demande vers le fichier d'index
La vraie demande à ce moment est <🎜. >, c'est http://127.0.0.1/index.html
frappé !config2
location /images/test.png { echo 'config1'; } location ^~ /images/ { echo 'config2'; } location ~ \/images\/test\.png$ { echo 'config3'; } location ~ \/images\/ { echo 'config4'; }
Quel sera le résultat ? http://127.0.0.1/images/test.png
, et la correspondance régulière frappe config3
Amélioration de la priorité de correspondance de chaîne (^~)
location /images/ { echo 'config1'; } location ^~ /images/test.png { echo 'config2'; } location ~ /images/test\.png$ { echo 'config3'; } location ~ \/images\/ { echo 'config4'; }
est demandé à ce moment-là ? http://127.0.0.1/images/test.png
, et la première correspondance arrive à config2
ici est donc spécial, afin d'augmenter la priorité de la correspondance de chaîne et de prendre la priorité sur la correspondance régulière ^~
.
Tutoriel Nginx》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!