Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was sind die URI-Abgleichsregeln der Nginx-Standortrichtlinie?

Was sind die URI-Abgleichsregeln der Nginx-Standortrichtlinie?

WBOY
WBOYnach vorne
2023-05-14 23:58:191536Durchsuche

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen