Was sind die URI-Abgleichsregeln der Nginx-Standortrichtlinie?

WBOY
Freigeben: 2023-05-14 23:58:19
nach vorne
1588 Leute haben es durchsucht

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 (~)

2> Regulärer Matching: Beginnend mit ~ oder ~* bedeutet regulärer Matching, ~* bedeutet regulärer Matching Bei Ausdrücken wird die Groß-/Kleinschreibung nicht beachtet



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/ { … }

* Standort /test/abc { … }



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

location =/ { … } Der Unterschied zwischen location / { … }:

* 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;
    } 
  }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage