Heim >Betrieb und Instandhaltung >Nginx >Detaillierte Erläuterung der Nginx-Standortanweisung
Mit welcher Nginx-Variablen stimmt der Standort überein?
$request_uri
Welche passenden Ortstypen gibt es?
=
beginnend mit
bedeutet eine exakte Übereinstimmung ^~
am Anfang, beachten Sie, dass es sich hierbei nicht um einen regulären Ausdruck handelt (es handelt sich um eine Zeichenfolgenübereinstimmung mit erhöhter Priorität) – sie soll Vorrang vor der Übereinstimmung mit regulären Ausdrücken haben. Wenn der Standort am besten übereinstimmt, wird die Erkennung regulärer Ausdrücke nicht mehr durchgeführt.
~
beginnt mit einem regulären Abgleich, bei dem die Groß- und Kleinschreibung beachtet wird.
~*
beginnt bei einem regulären Abgleich, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Nicht übereinstimmende reguläre und ohne Berücksichtigung der Groß- und Kleinschreibung nicht übereinstimmende reguläre
!~ && !~*
String-Übereinstimmung
/Universal-Übereinstimmung, wenn es keine andere Übereinstimmung gibt, wird jede Anfrage mit
OrtssuchreihenfolgeZuerst genau abgleichen
Dann abgleichen =
^~
Abschließend den allgemeinen Abgleich übergeben/durchführen
Wenn ein Abgleich erfolgreich ist, beenden Sie den Abgleich sofort und folgen Sie der aktuellen Verarbeitungsanforderung für die Abgleichsregel Besonderer Hinweis: Zuerst wird nach Zeichenfolgenübereinstimmungen gesucht, aber nur die längste Übereinstimmung wird aufgezeichnet, und dann wird die Suche nach regulären Übereinstimmungen fortgesetzt. Wenn es keine reguläre Übereinstimmung gibt, wird die reguläre Übereinstimmung gefunden , das reguläre Match wird getroffen. (Wenn ^~ die längste Übereinstimmung ist, wird direkt zugegriffen und die Suche nach regulären Ausdrücken beendet)
Genaue Übereinstimmunglocation = /images/test.png { echo 'config1'; } location /images/test.png { echo 'config2'; } location \/images\/test\.png$ { echo 'config3'; }
Was wird ausgegeben, wenn ist zu diesem Zeitpunkt angefordert Wolltuch?
Ausgabe, kein Zweifel, die exakte Übereinstimmung hat höchste Priorität! http://127.0.0.1/images/test.png
location = / { index index.html; } location / { echo 'config2'; }
config1
Dies ist die Eingabe Was wird ausgegeben? ist die Ausgabe von config2. Warum funktioniert die Priorität der exakten Übereinstimmung nicht? http://127.0.0.1
Ja, der genaue Abgleich funktioniert immer noch. Wenn ein Verzeichnis (nicht eine bestimmte Datei) angefordert wird, leitet Nginx die Anforderung intern an die Indexdatei weiter.
Die eigentliche Anforderung lautet zu diesem Zeitpunkt
, das ist einTreffer!
Genaue Übereinstimmung sollte also nicht verwendet werden, um /http://127.0.0.1/index.html
config2
String-Suche und reguläre Suche
location /images/test.png { echo 'config1'; } location ^~ /images/ { echo 'config2'; } location ~ \/images\/test\.png$ { echo 'config3'; } location ~ \/images\/ { echo 'config4'; }
Falls zu diesem Zeitpunkt angefordert
Was wird ausgegeben? ist natürlich und die reguläre Übereinstimmung trifft http://127.0.0.1/images/test.png
config3
Eine sorgfältige Beobachtung zeigt, dass config4 ebenfalls erfolgreich abgeglichen wurde, die reguläre Übereinstimmungsreihenfolge jedoch entsprechend der Definitionsreihenfolge des Standorts abgeglichen wird, sodass config3 zutrifft.
location /images/ { echo 'config1'; } location ^~ /images/test.png { echo 'config2'; } location ~ /images/test\.png$ { echo 'config3'; } location ~ \/images\/ { echo 'config4'; }
Was wird ausgegeben, wenn zu diesem Zeitpunkt angefordert wird?
ist natürlich, und die erste Übereinstimmung trifft http://127.0.0.1/images/test.png
Verwandte Empfehlungen: „config2
Nginx Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Nginx-Standortanweisung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!