web - Problem mit dem Nginx-Standortsuchalgorithmus! ?
黄舟
黄舟 2017-05-16 17:27:37
0
1
952

Veröffentlichen Sie zuerst meine Serverkonfiguration:

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;
     }
}

Die offizielle Priorität des Standortsuchpfads und die Beschreibung des Algorithmus lauten wie folgt:

Um den Standort zu finden, der zu einer bestimmten Anfrage passt, prüft Nginx zunächst
Standorte, die mithilfe der Präfixzeichenfolgen definiert werden (Präfixstandorte unter
). ihnen wird der Ort mit dem längsten passenden Präfix ausgewählt und
erinnert. Dann werden reguläre Ausdrücke in der Reihenfolge überprüft ihr Erscheinen in der Konfigurationsdatei Ausdrücke enden bei der ersten Übereinstimmung und dem entsprechenden
Konfiguration wird verwendet. Wenn keine Übereinstimmung mit einem regulären Ausdruck gefunden wird
Dann lautet die zuvor gespeicherte Konfiguration des Präfixspeicherorts
gebraucht.

Nach meinem Verständnis sollte der Algorithmus bei Nginx-Suchen so aussehen:

Suchen Sie den Standort gemäß dem Anforderungspräfix und suchen Sie nach der längsten gemeinsamen Präfixübereinstimmung (wenn ein =-Modifikator vorhanden ist, wird der Standort direkt abgeglichen, wenn ein ^~-Modifikator vorhanden ist, wird der Standort direkt verwendet). Denken Sie daran längster passender Ort.
  1. Suchen Sie weiterhin nach regulären Übereinstimmungen in der Konfigurationsreihenfolge, stimmen Sie den ersten übereinstimmenden Standort direkt ab, andernfalls verwenden Sie den gewöhnlichen längsten Standort
Mit anderen Worten: Wenn der Browser /favicon.ico anfordert, sollte dieser gemäß meiner Konfiguration direkt und genau abgeglichen werden
1 ist richtig, aber es stimmt jedes Mal mit 3 überein.

Ich möchte alle hier fragen: Gibt es Abweichungen in meinem Verständnis des Nginx-Standorts? Warum sieht meine Konfiguration dann so aus?

黄舟
黄舟

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

Antworte allen(1)
给我你的怀抱

按照楼主的方法配置了一下,我这里是可以进到# 1的。
我觉得可能是CDN缓存的问题。楼主试试别的文件rewrite或者在没有CDN的环境下试试。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!