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

Vue implementiert eine Countdown-Schaltfläche für den Bestätigungscode

In diesem Artikelbeispiel wird der spezifische Co...

Verwenden Sie Typescript-Konfigurationsschritte in Vue

Inhaltsverzeichnis 1. TypeScript wird in das alte...

Einige Details zu MySQL-Indizes

Vor ein paar Tagen stellte mir ein Kollege eine F...

Detaillierte Erklärung der Verwendung von Bildschirmbefehlen in Linux

GUN-Bildschirm: Offizielle Website: http://www.gn...

Beispiel für ein WeChat-Applet zum Erzielen des rotierenden Laterneneffekts

Vorwort In der täglichen Entwicklung stoßen wir h...

Vue+js realisiert Video-Ein- und Ausblendeffekte

Vue+js realisiert das Ein- und Ausblenden des Vid...

Vue implementiert das Hinzufügen von Wasserzeichen zu hochgeladenen Bildern

In diesem Artikel wird der spezifische Implementi...

Vue realisiert Web-Online-Chat-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

So implementieren Sie eine automatische Remote-Sicherung von MongoDB unter Linux

Vorwort Nachdem ich den vorherigen Artikel über d...

Docker-Datenverwaltung und Netzwerkkommunikationsnutzung

Sie können Docker installieren und einfache Vorgä...