Maison >Opération et maintenance >Nginx >Méthodes de correspondance d'emplacement et de saut de réécriture dans Nginx
Nginx : prend en charge la réécriture d'URL et si le jugement de condition via le module ngx_http_rewrite_module, mais ne prend pas en charge le reste
Jump : saute d'un emplacement à un autre emplacement, la boucle peut être exécutée 10 fois, nginx renverra une erreur 500 après avoir dépassé
Support PCRE : correspondance des règles de syntaxe d'expression régulière compatible Perl
Réécriture de la commande set du module : créez de nouvelles variables et attribuez-leur des valeurs
①Exécuter la commande de réécriture dans le bloc du serveur
② Exécuter la correspondance d'emplacement
③ Exécuter la commande de réécriture à l'emplacement sélectionné
Ajustez l'URL parcourue par l'utilisateur pour qu'elle paraisse plus standardisée et conforme au développement et Les besoins du personnel produit
Afin de permettre aux moteurs de recherche de rechercher le contenu du site Web et d'offrir une meilleure expérience utilisateur, les entreprises déguiseront les adresses URL dynamiques en adresses statiques pour fournir des services
Une fois l'URL modifiée par un nouveau nom de domaine, les anciennes visites seront être redirigé vers le nouveau nom de domaine sur ; par exemple, visiter le site 360buy.com de JD.com passera à jd.com
Certains ajustements commerciaux sur le serveur, tels que les ajustements d'URL basés sur des variables spéciales, des répertoires, des informations client, etc.
Réécriture de la syntaxe
flag tag description:
last: Une fois la correspondance de cette règle terminée, continuez à faire correspondre les nouvelles règles d'URI d'emplacement vers le bas, généralement utilisées dans le serveur et if
l'emplacement peut être grossièrement divisé en trois catégories :
Premièrement, correspondance exacte =
localisation = / {}
Parce que toutes les adresses commencent par /, cette règle correspondra toutes les requêtes, telles que l'accès à / et /data, puis / matches, /data Correspond également
Mais si elle est suivie d'une expression régulière, elle sera d'abord mise en correspondance avec la chaîne la plus longue (correspondance la plus longue)
emplacement /documents/ {}
Après avoir fait correspondre l'adresse commençant par /documents/, vous devez continuer la recherche Autres emplacements
emplacement /documents/abc {}
correspond à toute adresse commençant par /documents/abc. Après la correspondance, continuez à rechercher autre. locations
Seules les expressions régulières derrière d'autres emplacements ne correspondent pas. Cet
emplacement ^~ /images/ {}
correspond à toute adresse commençant par /images/ Après la correspondance, arrêtez de rechercher des règles régulières et utilisez ce
emplacement ~. * .( gif|jpg|jpeg)$ {}
correspond à toutes les demandes se terminant par gif, jpg, jpeg
Cependant, toutes les images demandées sous /images/ seront traitées par emplacement ^~ /images/ car ^~ est prioritaire Le niveau est plus élevé, donc cette règle habituelle ne peut pas être atteinte
emplacement /images/abc {}
Le caractère le plus long correspond à /images/abc, qui a la priorité la plus basse. Si vous continuez à rechercher d'autres emplacements, vous trouverez. que ^~ et ~ existent
location ~ /images/abc {}
correspond à ceux commençant par /images/abc, avec la deuxième priorité. Ceci ne sera utilisé que si l'emplacement ^~ /images est supprimé
location /images. /abc/1.html {}
Correspond au fichier /images/abc/1.html, si on le compare au fichier régulier ~ /images/abc/1.html, le fichier régulier a une priorité plus élevée
Résumé des priorités :
(emplacement = complet chemin) > (emplacement ^~ chemin) > (emplacement,* séquence régulière) > (chemin de départ de la partie emplacement) > (emplacement /)
5. correspond à la racine du site Web. L'accès à la page d'accueil du site Web via le nom de domaine est plus fréquent. Son utilisation accélérera le traitement, comme celui du site officiel
.Il peut s'agir d'une page d'accueil statique, ou elle peut être transmise directement au "serveur d'applications" back-end - PHP, Apache (le serveur d'applications est montré dans l'image ci-dessous)
location / { root html; index index.html index.html; }
②La deuxième règle requise :
Traitement des requêtes de fichiers statiques, qui est la force de nginx en tant que serveur http (①capacité de traitement des requêtes statiques②capacité de traitement simultané élevée③faible consommation de ressources)
Il existe deux modes de configuration, correspondance de répertoire ou correspondance de suffixe, choisissez-en un ou utilisez-le avec
location ^~ /static/ { root /webroot/static/; } location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/ ; }
③ La troisième règle requise :
est une règle générale, telle que celle utilisée pour transmettre les requêtes dynamiques avec les suffixes .php et .jsp au serveur d'applications back-end
Les requêtes de fichiers non statiques sont des requêtes dynamiques par défaut (Jump/ proxy inverse)
upstream tomcat_server { 192.168.126.12:80 192.168.126.23:80 }
location / { proxy_ pass http://tomcat_server;
1. Comparez la réécriture et l'emplacement
Mêmes points : les deux implémentent le saut
Différences : la réécriture modifie le chemin pour obtenir des ressources dans le même nom de domaine
L'emplacement contrôle l'accès ou le proxy inverse à une classe de chemins, et peut également proxy_pass à d'autres machines
2. la réécriture sera écrite dans l'emplacement, et la séquence d'exécution
exécutera la commande de réécriture dans le bloc serveur
Exécutera la correspondance d'emplacement.
Exécuter l'instruction de réécriture à l'emplacement sélectionné
3. Comment les priorités d'emplacement sont-elles organisées ?
Faire correspondre un fichier spécifique
(emplacement = chemin complet) > (emplacement ^~ chemin complet) > (emplacement ~* chemin complet) > correspondance de répertoire pour accéder à un fichier
(emplacement = répertoire) > (emplacement ^~ répertoire) > (emplacement ~* répertoire) > (emplacement /)
4. le répertoire ne change-t-il qu'en cas d'insensibilité à la casseExpression régulière : le but est de faire correspondre les
fichiers aussi précisément que possible
fichiers— , priorité plus élevée
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!