Maison  >  Article  >  Opération et maintenance  >  Méthodes de correspondance d'emplacement et de saut de réécriture dans Nginx

Méthodes de correspondance d'emplacement et de saut de réécriture dans Nginx

WBOY
WBOYavant
2023-05-22 15:25:191697parcourir

    1. Implémentation du saut de réécriture

    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

    2. réécrivez la séquence d'exécution

    ①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é

    3. Scénario de saut de réécriture

    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.

    4. Description de la grammaire et de la balise flg

    Réécriture de la syntaxe flag tags

    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

      break: Cette règle prend fin après. la correspondance est terminée et ne correspondra plus aux règles ultérieures. Généralement utilisé dans l'emplacement
    • redirection : renvoie la redirection temporaire 302, l'adresse du navigateur affichera l'adresse URL après le saut
    • permanent : renvoie la redirection permanente 301. , la barre d'adresse du navigateur affichera l'URL après le saut Adresse
    • 5. Symboles d'expression régulière couramment utilisés dans Nginx
    6. Emplacement

    1. Classification

    Méthodes de correspondance demplacement et de saut de réécriture dans Nginxl'emplacement peut être grossièrement divisé en trois catégories :

    Correspondance exacte : emplacement = / {&hellip ;}

      Correspondance générale : emplacement / {…}
    • Correspondance régulière : emplacement ~ / {…}
    • 2. règles de correspondance
    3. Priorité

    Méthodes de correspondance demplacement et de saut de réécriture dans NginxPremièrement, correspondance exacte =

      Deuxièmement, correspondance de préfixe^~
    • Deuxièmement, correspondance régulière dans l'ordre dans le fichier~ ou~*
    • Ensuite, la correspondance de préfixe sans aucune modification, c'est-à-dire la correspondance générale
    • Enfin remis à / correspondance universelle, avec la priorité la plus basse
    • 4. Exemple
    • localisation = / {}

    • = est une correspondance exacte /, et aucune chaîne ne peut être placée après le nom d'hôte, comme accéder à / et /xcf , alors / correspond, /xcf ne correspond pas à

    location / {}

    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)

    Méthodes de correspondance demplacement et de saut de réécriture dans Nginx

    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;

    Résumé :

    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 casse

    Expression 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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer