Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Detaillierte Erläuterung der Nginx-Standortanweisung

Detaillierte Erläuterung der Nginx-Standortanweisung

藏色散人
藏色散人nach vorne
2020-01-29 13:24:023069Durchsuche

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

Ortssuchreihenfolge

Zuerst genau abgleichen

Dann abgleichen

=

Dann der Reihenfolge der Konfigurationsdateien folgen. Regelmäßigen Abgleich durchführen

^~ Abschließend den allgemeinen Abgleich übergeben/durchführen

Hinweis:

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 Übereinstimmung

location = /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

Sonderfall der exakten Übereinstimmung

location = / {
    index index.html;
}
location / {
    echo 'config2';
}
config1Dies ist die Eingabe

Was wird ausgegeben?

ist die Ausgabe von config2. Warum funktioniert die Priorität der exakten Übereinstimmung nicht?

http://127.0.0.1Ja, 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 ein

Treffer!

Genaue Übereinstimmung sollte also nicht verwendet werden, um /http://127.0.0.1/index.htmlconfig2String-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

(obwohl config1 die längste übereinstimmende Zeichenfolge ist, wird sie zu diesem Zeitpunkt nur aufgezeichnet und die reguläre Übereinstimmung wird später durchsucht. also config3 reguläre Übereinstimmungstreffer),

config3Eine 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.

String Matching Priority Improvement (^~)

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

(da zuerst nach Zeichenfolgenübereinstimmungen gesucht wird, wird zu diesem Zeitpunkt festgestellt, dass config2 die längste Zeichenfolgenübereinstimmung ist und das ^~ ist Matching-Methode, also hören Sie auf, nach regulären Ausdrücken zu suchen, und klicken Sie direkt darauf!

Verwandte Empfehlungen: „config2Nginx 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!

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