Maison > Opération et maintenance > Nginx > Explication détaillée de la directive de localisation nginx

Explication détaillée de la directive de localisation nginx

藏色散人
Libérer: 2020-01-29 13:24:02
avant
3160 Les gens l'ont consulté

Explication détaillée de la directive de localisation nginx

À 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';
}
Copier après la connexion

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';
}
Copier après la connexion

C'est l'entrée http://127.0.0.1Qu'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

La correspondance exacte ne doit donc pas être utilisée pour faire correspondre /

Recherche de chaîne et recherche régulière

location /images/test.png {
    echo &#39;config1&#39;;
}
location ^~ /images/ {
    echo &#39;config2&#39;;
}
location ~ \/images\/test\.png$ {
    echo &#39;config3&#39;;
}
location ~ \/images\/ {
    echo &#39;config4&#39;;
}
Copier après la connexion

Si demandé à ce moment

Quel sera le résultat ? http://127.0.0.1/images/test.png

est bien sûr

, et la correspondance régulière frappe config3

(bien que config1 soit la chaîne correspondante la plus longue, elle n'est enregistrée qu'à ce moment-là, et la correspondance régulière sera recherchée plus tard, donc config3 correspond régulièrement),

Une observation attentive montre que config4 est également mis en correspondance avec succès, mais l'ordre de correspondance régulier est mis en correspondance en fonction de l'ordre de définition de l'emplacement, donc config3 frappe.

Amélioration de la priorité de correspondance de chaîne (^~)

location /images/ {
    echo &#39;config1&#39;;
}
location ^~ /images/test.png {
    echo &#39;config2&#39;;
}
location ~ /images/test\.png$ {
    echo &#39;config3&#39;;
}
location ~ \/images\/ {
    echo &#39;config4&#39;;
}
Copier après la connexion
Que sera le résultat si

est demandé à ce moment-là ? http://127.0.0.1/images/test.png

est bien sûr

, et la première correspondance arrive à config2

(car la correspondance de chaîne est recherchée en premier, à ce moment-là, on constate que config2 est la chaîne correspondante la plus longue et est le ^~ méthode de correspondance, alors arrêtez de chercher des expressions régulières et appuyez dessus directement ! )

Le symbole

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 ^~.

Recommandations associées : "

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal