web - Problème d'algorithme de recherche de localisation nginx ! ?
黄舟
黄舟 2017-05-16 17:27:37
0
1
981

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 ?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
给我你的怀抱

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal