Detaillierte Zusammenfassung der URI-Übereinstimmungsregeln der Nginx Location-Direktive

Detaillierte Zusammenfassung der URI-Übereinstimmungsregeln der Nginx Location-Direktive

1. Einleitung

Die Standortanweisung ist die Kernkonfiguration des http-Moduls. Sie empfängt von Benutzern gesendete Anfragen gemäß vordefinierten URL-Übereinstimmungsregeln. Gemäß den Übereinstimmungsergebnissen leitet sie die Anfragen an den Hintergrundserver weiter, lehnt illegale Anfragen direkt ab und gibt die Fehlerverarbeitung 403, 404, 500 usw. zurück.

2. Syntax des Standortbefehls

Standort [=|~|~*|^~|@] /uri/ { … } oder Standort @name { … }

3. URI-Übereinstimmungsmuster

Die Standortdirektive ist in zwei Übereinstimmungsmodi unterteilt:
1> Normale Zeichenfolgenübereinstimmung: Regeln, die am Anfang mit = beginnen oder kein führendes Zeichen (~) haben
2> Übereinstimmung mit regulären Ausdrücken: Beginnend mit ~ oder ~* bedeutet dies, dass es sich um eine Übereinstimmung mit regulären Ausdrücken handelt, ~* bedeutet, dass bei regulären Ausdrücken die Groß-/Kleinschreibung nicht beachtet wird

4. Regeln für den Standort-URI-Abgleich

Wenn nginx eine Anfrage empfängt, fängt es den URI-Teil der Anfrage ab und sucht nach URI-übereinstimmenden Mustern, die in allen Standortanweisungen definiert sind. Im Servermodul können Sie mehrere Standortanweisungen definieren, um verschiedene URL-Anfragen und URI-Übereinstimmungsmuster für verschiedene Standortkonfigurationen abzugleichen. Das allgemeine Übereinstimmungsprinzip lautet: Zuerst das allgemeine Zeichenfolgenmuster abgleichen, dann das reguläre Muster. Erkennen Sie nur den URI-Teil, die Anfrage lautet beispielsweise: /test/abc/user.do?name=xxxx

Wenn eine Anfrage eingeht, läuft der Prozess zur Zuordnung dieser Anfrage durch Nginx wie folgt ab:

1> Prüfen Sie zunächst, ob eine exakte Übereinstimmung vorliegt, die mit = beginnt, beispielsweise: location = /test/abc/user.do { … }

2> Suche erneut nach einer normalen Übereinstimmung, basierend auf dem Prinzip des größten Präfixes. Wenn die folgenden zwei Standorte vorhanden sind, wird der letztere abgeglichen
* Standort /test/ { … }
* Standort /test/abc { … }

3> Nach dem Abgleichen eines gemeinsamen Musters endet die Suche nicht, sondern das aktuelle Übereinstimmungsergebnis wird vorübergehend gespeichert und die Suche nach dem regulären Übereinstimmungsmuster wird fortgesetzt

4> Nachdem alle regulären Übereinstimmungsmuster das erste übereinstimmende Element am Standort gefunden haben, wird dieses Element als endgültiges Übereinstimmungsergebnis verwendet. Daher werden die Übereinstimmungsregeln für reguläre übereinstimmende Elemente von der Reihenfolge der Definition beeinflusst, für gewöhnliche Übereinstimmungsmuster jedoch nicht.

5> Wenn keine reguläre Übereinstimmung gefunden wird, wird das zwischengespeicherte Ergebnis in Schritt 3 als endgültiges Übereinstimmungsergebnis verwendet
6> Wenn keine Übereinstimmung gefunden wird, geben Sie 404 zurück

5. Unterschiede zwischen exakter Übereinstimmung und Fuzzy-Übereinstimmung
Der Unterschied zwischen location =/ { … } und location / { … } ist:
* Das erste ist eine exakte Übereinstimmung, die nur auf /-Anfragen reagiert. Alle Anfragen wie /xxx oder /xxx/xxxx werden nicht als Präfix übereinstimmen.
* Letzteres bedeutet, dass jede Anfrage mit dem Präfix / abgeglichen wird. Zum Beispiel: /abc , /test/abc , /test/abc/aaaa

6. Regelmäßiges und unregelmäßiges Matching

1> location ~ /test/.+.jsp$ { … }: Normale Übereinstimmung, unterstützt die Standardsyntax für reguläre Ausdrücke.
2> location ^~ / { … }: ^~ bedeutet, dass die reguläre Übereinstimmung deaktiviert wird. Wenn dieses allgemeine Übereinstimmungsmuster gefunden wird, wird die Suche nach regulären Übereinstimmungsmustern nicht mehr fortgesetzt.

...
http {
  ...
  Server {
    hören Sie 80;
    Servername localhost;

    Standort / {
      Stamm-HTML;
      Index Index.html Index.htm;
      # alles ablehnen; Anfrage ablehnen und 403 zurückgeben
      # alles zulassen; Anfrage zulassen}

    Standort /abc {
      alles leugnen;
    }

    Standort ~ /.+\.jsp$ {
      Proxy-Passwort http://Standort:9090;
    }

    # Alle JSP-Dateien im Pfad /test abgleichen ~ /test/.+\.jsp$ {
      Proxy-Passwort http://localhost:8080;
    }

    # Definieren Sie verschiedene Fehlerseiten error_page 404 /404.html

    Fehlerseite 500 502 503 504 /50x.html;
    Standort = /50x.html {
      Stamm-HTML;
    }

    # @Ähnlich der Variablendefinition# error_page 403 http://blog.csdn.net; #Diese Definition ist nicht zulässig und es ist erforderlich, @ zu verwenden, um temporäre Variablen zu definieren, um error_page 403 zu implementieren @page403;
    Standort @Seite403 {
      Proxy_Pass http://blog.csdn.net;
    } 
  }
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Nginx-Standortabgleichsregeln
  • Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)
  • Beispiel einer Nginx-Standortübereinstimmungsregel
  • So erfüllen Sie mit Nginx mehrere Bedingungen
  • Implementierung von Nginx-Weiterleitungsübereinstimmungsregeln
  • Eine kurze Zusammenfassung der Nginx-Übereinstimmungsregeln (empfohlen)
  • Detaillierte Erläuterung der verschiedenen Matching-Methoden von Nginx

<<:  MySQL 5.7.20 Green Edition Installation Detailliertes grafisches Tutorial

>>:  Vue implementiert die richtige Slide-Out-Layer-Animation

Artikel empfehlen

MySQL-Benutzer und -Berechtigungen und Beispiele zum Knacken des Root-Passworts

MySQL-Benutzer und -Berechtigungen In MySQL gibt ...

Zehn nützliche und einfache MySQL-Funktionen

Funktion 0. Aktuelle Uhrzeit anzeigen Befehl: sel...

So stellen Sie mit Navicat eine Remoteverbindung zur Cloud-Server-Datenbank her

Es ist sehr praktisch, eine Verbindung zu einer R...

MySQL Serie 4 SQL-Syntax

Inhaltsverzeichnis Tutorial-Reihe 1. Einführung u...

jQuery-Plugin zum Erzielen eines Code-Rain-Effekts

In diesem Artikel wird der spezifische Code des j...

Interpretation von 17 Werbewirksamkeitsmaßen

1. 85 % der Anzeigen werden nicht gelesen <br ...

So verwenden Sie js zur Kommunikation zwischen zwei HTML-Fenstern

Szenario: Wenn Seite A Seite B öffnet, muss Seite...

vue + ts realisiert den Effekt des Ziehens von Elementen mit der Maus

In diesem Artikelbeispiel wird der spezifische Co...

Tutorial und Praxis zu den virtuellen Speichereinstellungen unter Linux

Was ist virtueller Speicher? Zunächst werde ich e...