Eine kurze Analyse der Übereinstimmungspriorität des Nginx-Konfigurationsspeicherorts

Eine kurze Analyse der Übereinstimmungspriorität des Nginx-Konfigurationsspeicherorts

Vorwort

Der Speicherort im Serverblock in der Nginx-Konfiguration wird verwendet, um die Anforderungs-URI abzugleichen, sodass unterschiedliche URIs unterschiedlich verarbeitet werden können.

Standorttyp und Bedingungen für erfolgreiches Matching

  • Standort = Ausdruck {} Genaue Übereinstimmung, nur wenn URI und Ausdruck exakt gleich sind, ist die Übereinstimmung erfolgreich;
  • Standortausdruck {} Normale Übereinstimmung, solange die Zeichen im vorderen Teil der URI mit denen des Ausdrucks übereinstimmen, ist die Übereinstimmung erfolgreich.
  • Standort ^~ Ausdruck {} Normale Übereinstimmung, solange der erste Teil der URI mit dem Ausdruck übereinstimmt, ist die Übereinstimmung erfolgreich.
  • Standort ~ Regex {} reguläre Übereinstimmung (Groß-/Kleinschreibung beachten);
  • location ~* regex {} Übereinstimmung mit regulären Ausdrücken (ohne Berücksichtigung der Groß-/Kleinschreibung);

Die Zusammenfassung kann in drei Kategorien unterteilt werden: exakte Übereinstimmung, normale Übereinstimmung und reguläre Übereinstimmung.

Matching-Logik und Priorität

Bei einer Anfrage, die bei Nginx eingeht, kann deren URI die Übereinstimmungsbedingungen mehrerer Standorte erfüllen, die Anfrage wird jedoch letztendlich nur von einer Standortlogik verarbeitet (Umleitungen werden nicht gezählt), sodass beim Abgleich ein Prioritätsunterschied bestehen muss. Die Matching-Logik von Nginx lautet wie folgt:

1. Führen Sie eine exakte Übereinstimmung durch

Wenn die Anforderungs-URI mit location = übereinstimmt (die Bedingung für genaue Übereinstimmung erfüllt), wird der Inhalt von location ausgeführt und es werden keine weiteren Übereinstimmungen durchgeführt. Andernfalls siehe den nächsten Punkt.

2. Führen Sie einen normalen Abgleich durch

Als Nächstes vergleicht Nginx die URI mit allen normalen übereinstimmenden Standorten (unabhängig vom Typ ^~ oder vorzeichenlosen Typ) und sucht dann den Standort mit dem höchsten Übereinstimmungsgrad. Wenn der Standort vom Typ ^~ ist, wird der Abgleich beendet und der Inhalt des Standorts ausgeführt. Wenn der Standort mit dem höchsten Übereinstimmungsgrad vom Typ vorzeichenlosen Typ ist, wird dieser vorzeichenlose Standort beibehalten und mit dem folgenden regulären Abgleich fortgefahren. Wenn die URI die Bedingungen eines normalen übereinstimmenden Standorts nicht erfüllt, wird direkt mit dem nächsten Schritt fortgefahren.

3. Führen Sie einen regulären Ausdrucksabgleich durch

Das Abgleichen von regulären Ausdrücken hängt von der Reihenfolge der Standorte ab. Nginx gleicht von oben nach unten ab. Wenn ein Standort übereinstimmt, wird die Logik dieses Standorts ausgeführt und alle nachfolgenden Standorte mit regulären Ausdrücken werden ignoriert, wodurch das Abgleichen beendet wird. Wenn kein regulärer Ausdruck übereinstimmt, wird der zuvor reservierte, unsignierte Standort ausgeführt. Wenn zuvor kein Standort reserviert wurde, wird direkt 404 zurückgegeben.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Priorität und Sicherheitsprobleme bei der Standortübereinstimmung der Nginx-Konfigurationsrichtlinie
  • Ausführliche Erläuterung der Standortpriorität von Nginx

<<:  So implementieren Sie eine bidirektionale Bindungsfunktion in vue.js mit reinem JS

>>:  Erklärung zur Verwendung von „Ersetzen“ und „Ersetzen in“ in MySQL

Artikel empfehlen

Informationen zur Installationsmethode für MySQL 8.0.13-ZIP-Pakete

MySQL 8.0.13 verfügt standardmäßig über einen Dat...

So verwenden Sie Filter zur Implementierung der Überwachung in Zabbix

Als ich kürzlich an Überwachungsgeräten arbeitete...

Vue implementiert die vollständige Auswahlfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Vue implementiert den Schnittstellen-Gleiteffekt

In diesem Artikelbeispiel wird der spezifische Co...

Eine vollständige Aufzeichnung eines Mysql-Deadlock-Fehlerbehebungsprozesses

Vorwort Die Datenbank-Deadlocks, die ich zuvor er...

Allgemeine Tags in XHTML

Was sind XHTML-Tags? XHTML-Tag-Elemente sind die ...

Details zur Verwendung von „order by“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...