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

Vite+Electron zum schnellen Erstellen von VUE3-Desktopanwendungen

Inhaltsverzeichnis 1. Einleitung 2. Erstellen Sie...

Einige Vorschläge zur Lesbarkeit des Vue-Codes

Inhaltsverzeichnis 1. Nutzen Sie Komponenten sinn...

So verwenden Sie Linux-Befehle in IDEA

Im Vergleich zum Windows-System bietet das Linux-...

Remote-Entwicklung mit VSCode und SSH

0. Warum brauchen wir Remote-Entwicklung? Bei der...

Detaillierte Erklärung zur Formatierung von Zahlen in MySQL

Aus beruflichen Gründen musste ich kürzlich Zahle...

MySql5.7.21 Installationspunkte Datensatznotizen

Die heruntergeladene Version ist die Zip-Dekompri...

Detaillierte Erklärung des CSS-Pseudoelements::marker

Dieser Artikel stellt ein interessantes Pseudoele...

Vue implementiert einen einfachen Laufschrifteffekt

In diesem Artikel wird der spezifische Code von V...

Javascript um den Drag-Effekt der Login-Box zu erreichen

In diesem Artikel wird der spezifische Code von J...

JS implementiert ein zufälliges Namensaufrufsystem

Verwenden Sie JS, um ein zufälliges Namensaufrufs...

Beispiel für die Anpassung des Stils des Auswahlfelds für Formulardateien

Code kopieren Der Code lautet wie folgt: <!DOC...

Details zu benutzerdefinierten Vue3-Anweisungen

Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...

Drei JavaScript-Methoden zur Lösung des Joseph-Ring-Problems

Inhaltsverzeichnis Überblick Problembeschreibung ...