1. Einführung
Die Standortanweisung ist die Kernkonfiguration im http-Modul. Sie empfängt Anfragen, die von Benutzern basierend auf vordefinierten URL-Matching-Regeln gesendet werden, und leitet die Anfragen basierend auf den Matching-Ergebnissen an den Backend-Server weiter. 403-, 404-, 500-Fehlerverarbeitung usw. direkt ablehnen und zurückgeben.
2. Syntax der Standortanweisung
location [=|~|~*|^~|@] /uri/ { … } oder location @name { … }
3 Die location-Direktive ist in zwei Matching-Modi unterteilt:
1> Gewöhnlicher String-Matching: Regeln beginnend mit = oder ohne führende Zeichen (~)
4. Standort-URI-Übereinstimmungsregeln
Wenn Nginx eine Anfrage erhält, fängt es den URI-Teil der Anfrage ab und sucht nach allen in der Standortanweisung definierten URI-Übereinstimmungsmustern. Im Servermodul können mehrere Standortanweisungen definiert werden, um unterschiedliche URL-Anfragen und die URI-Übereinstimmungsmuster mehrerer unterschiedlicher Standortkonfigurationen abzugleichen. Das allgemeine Übereinstimmungsprinzip lautet: Zuerst das normale Zeichenfolgenmuster abgleichen und dann das reguläre Muster abgleichen. Nur der URI-Teil wird erkannt. Die Anfrage lautet beispielsweise: /test/abc/user.do?name=xxxx
Nachdem eine Anfrage eingegangen ist, gleicht Nginx die Anfrage wie folgt ab:
1> ob es etwas gibt, das mit = Exakte Übereinstimmung beginnt, wie zum Beispiel: location = /test/abc/user.do { … }
2> Suchen Sie dann nach dem Prinzip der maximalen Präfixe Standorte, Letzteres wird abgeglichen
* Standort /test/ { … }
3> Nach dem Abgleich eines gemeinsamen Formats wird die Suche nicht beendet, sondern der aktuelle Abgleich wird vorübergehend gespeichert Ergebnisse und sucht weiterhin nach regulären Übereinstimmungsmustern.
4> Definierte Reihenfolge, normale Übereinstimmungsmuster jedoch nicht
5> Wenn keine reguläre Übereinstimmung gefunden wird, ist das zwischengespeicherte Ergebnis in 3 das endgültige Übereinstimmungsergebnis
6> Wenn keine Übereinstimmung gefunden wird, wird 404 zurückgegeben
5. Der Unterschied zwischen exaktem Matching und Fuzzy-Matching
* Ersteres ist ein exakter Match und antwortet nur auf /xxx- oder /xxx/xxxx-Anfragen wird nicht in Form eines Präfixes abgeglichen * Letzteres gilt: Solange der Anfrage ein / vorangestellt ist, wird sie abgeglichen. Zum Beispiel: /abc, /test/abc, /test/abc/aaaa
6. Regulärer und nicht regulärer Abgleich
1> Ort ~ /test/.+.jsp$ { … }: Regulärer Abgleich , unterstützte Standard-Syntax für reguläre Ausdrücke. 2> Ort ^~ / { … }: ^~ bedeutet, den regulären Abgleich zu deaktivieren. Wenn nach diesem gewöhnlichen Abgleichsmuster gesucht wird, wird nicht mehr nach dem regulären Abgleichsmuster gesucht.
... http { ... server { listen 80; server_name localhost; location / { root html; index index.html index.htm; # deny all; 拒绝请求,返回403 # allow all; 允许请求 } location /abc { deny all; } location ~ /.+\.jsp$ { proxy_pass http://location:9090; } # 匹配所有/test路径下的jsp文件 location ~ /test/.+\.jsp$ { proxy_pass http://localhost:8080; } # 定义各类错误页 error_page 404 /404.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # @类似于变量定义 # error_page 403 http://blog.csdn.net; #这种定义不允许,需求利用@定义临时变量来实现 error_page 403 @page403; location @page403 { proxy_pass http://blog.csdn.net; } } }
Das obige ist der detaillierte Inhalt vonWas sind die URI-Abgleichsregeln der Nginx-Standortrichtlinie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!