recherche

Maison  >  Questions et réponses  >  le corps du texte

web - Problème d'algorithme de recherche de localisation nginx ! ?

Publier d'abord la configuration de mon serveur :

server {
    listen 80;
    server_name xxx; 
    # 1
    location = /favicon.ico {
        root /home/www-data/static;
        rewrite (.*) /img/designs/admin-favicon.ico;
    }
    #2
    location = /robots.txt {
        root /home/www-data/static;
        rewrite (.*) /admin-robots.txt;
    }
    # 3
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://127.0.0.1:22222;
     }
}

La priorité officielle du chemin de recherche de localisation et la description de l'algorithme sont les suivantes :

Pour trouver l'emplacement correspondant à une requête donnée, nginx vérifie d'abord
emplacements définis à l'aide des chaînes de préfixe (emplacements de préfixe Among
). eux, l'emplacement avec le préfixe correspondant le plus long est sélectionné et
mémorisées. Ensuite, les expressions régulières sont vérifiées, dans l'ordre de
. leur apparition dans le fichier de configuration. La recherche de régulier
. les expressions se terminent au premier match, et le correspondant
la configuration est utilisée si aucune correspondance avec une expression régulière n'est trouvée
alors la configuration de l'emplacement du préfixe mémorisée plus tôt est
utilisé.

D'après ma compréhension, l'algorithme lors des recherches Nginx devrait être comme ceci :

  1. Recherchez l'emplacement en fonction du préfixe de la demande et recherchez la correspondance de préfixe commun la plus longue (s'il y a un modificateur =, l'emplacement sera mis en correspondance directement, s'il y a un modificateur ^~, l'emplacement sera utilisé directement), rappelez-vous le emplacement correspondant le plus long.
  2. Continuez à rechercher des correspondances régulières dans l'ordre de configuration. S'il y en a une, faites correspondre directement le premier emplacement correspondant, sinon utilisez l'emplacement ordinaire le plus long

En d'autres termes, selon ma configuration, lorsque le navigateur demande /favicon.ico, il doit correspondre directement et précisément
1 est correct, mais il correspond à 3 à chaque fois.

Je voudrais demander à tout le monde ici : y a-t-il un écart dans ma compréhension de l'emplacement de Nginx ? Alors pourquoi ma configuration donne-t-elle ce résultat ?

黄舟黄舟2757 Il y a quelques jours988

répondre à tous(1)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:29:37

    Après l'avoir configuré selon la méthode de l'affiche originale, je peux accéder au n°1 ici.
    Je pense qu'il s'agit peut-être d'un problème de cache CDN. L'auteur peut essayer de réécrire d'autres fichiers ou l'essayer dans un environnement sans CDN.

    répondre
    0
  • Annulerrépondre