Detaillierte Erläuterung der Server- und Standortkonfiguration der einfachen Weiterleitungsanforderung von nginx

Detaillierte Erläuterung der Server- und Standortkonfiguration der einfachen Weiterleitungsanforderung von nginx

Lassen Sie uns kurz die Konfiguration von Server und Standort in nginx klären.

Beispiel-URL: www.mask_dev2.com:9999/login/

Die erste Hälfte der Server-Pipe, also: www.mask_dev2.com:9999

Der Standort steuert die zweite Hälfte, nämlich: /login/

Ein Nginx kann mit mehreren Servern konfiguriert werden.

Jeder Server kann mit mehreren Standorten konfiguriert werden.

Die erste Hälfte der URL steuert, welcher Server ausgewählt wird, und die zweite Hälfte steuert, welcher Standort ausgewählt wird, was letztendlich bestimmt, wo die Anfrage gestellt wird.

Serverkonfiguration

Server {
 hör zu 9999;
 Servername www.mask_dev2.cn;
 Standort / {
  Standardtyp Text/HTML;
  Inhalt von Lua '
   ngx.say("<p>zuerst</p>")
  ';
 }
}

Server {
 hör zu 9999;
 Servername www.mask_dev2.*;
 Standort / {
  Standardtyp Text/HTML;
  Inhalt von Lua '
   ngx.say("<p>Sekunde</p>")
  ';    
 }
}

Server {
 hör zu 9998;
 Servername _;
 Standort / {
  Standardtyp Text/HTML;
  Inhalt von Lua '
   ngx.say("<p>dritte</p>")
  ';

 }
}

Zunächst muss die für Nginx angeforderte Adresse dem Server entsprechen, auf dem sich das angeforderte Nginx befindet, d. h. die IP-Adresse muss festgelegt sein.

Mit anderen Worten: Der Servername spielt keine Rolle, er bezieht sich auf den aktuellen Server.

Wie entspricht der aktuelle Server also mehreren Domänennamen? Dies muss nur im entsprechenden DNS-Server hinzugefügt werden. Behandeln Sie beispielsweise den lokalen Computer vorübergehend als DNS-Server und ändern Sie die Hosts

127.0.0.1 lokaler Host
127.0.0.1 www.mask_dev2.cn
127.0.0.1 www.mask_dev2.com

Server-Matching-Reihenfolge

Die Übereinstimmungspriorität von Servername und Host lautet wie folgt:

1. Genaue Übereinstimmung
2. Platzhalter zuerst, z. B. *.test.com
3. Nach dem ersten, zum Beispiel www.test.*
4. Normale Übereinstimmung, z. B. ~^\.www\.test\.com$

Wenn keines davon übereinstimmt

1. Bevorzugen Sie default oder default_server nach dem Listen-Konfigurationselement
2. Suchen Sie den ersten Serverblock, der dem Abhörport entspricht

Standortkonfiguration

Nachdem Sie den Server gefunden haben, suchen Sie den spezifischen Standort

Server {
 hör zu 9998;
 Servername _;
 Standort = / { 
  #Regel A 
 } 
 Standort = /login { 
  #Regel B 
 } 
 Standort ^~ /static/ { 
  #Regel C 
 } 
 Standort ~ \.(gif|jpg|png|js|css)$ { 
  #Regel D 
 } 
 Standort ~* \.png$ { 
  #Regel E 
 } 
 Standort !~ \.xhtml$ { 
  #Regel F 
 } 
 Standort !~* \.xhtml$ { 
  #Regel G 
 } 
 Standort / { 
  #Regel H 
 }

Syntaxregeln:

Standort [=||*|^~] uri { … }

  1. = am Anfang zeigt eine genaue Übereinstimmung an
  2. ^~ am Anfang bedeutet, dass die URI mit einer regulären Zeichenfolge beginnt, was als Übereinstimmung mit dem URL-Pfad verstanden werden kann. Nginx kodiert die URL nicht, daher lautet die Anfrage /static/20%/aa, was mit der Regel ^~ static /aa übereinstimmt (beachten Sie das Leerzeichen).
  3. ~ beginnt mit einem Groß-/Kleinschreibung beachtenden regulären Ausdruck
  4. ~* beginnt mit einem regulären Ausdruck ohne Berücksichtigung der Groß-/Kleinschreibung
  5. ! und !* sind reguläre Ausdrücke, die zwischen Groß- und Kleinschreibung unterscheiden bzw. nicht.
  6. / Universelle Übereinstimmung, jede Anfrage wird abgeglichen.
  7. Wenn mehrere Standorte konfiguriert sind, lautet die Übereinstimmungsreihenfolge wie folgt (basierend auf Referenzmaterialien, noch nicht in der Praxis verifiziert, Sie werden es nach dem Ausprobieren wissen, seien Sie nicht daran gebunden, es dient nur als Referenz):

Zuerst entspricht es =, dann ^~, dann dem regulären Ausdruck in der Reihenfolge in der Datei und schließlich der allgemeinen Übereinstimmung mit /. Wenn eine Übereinstimmung erfolgreich ist, beenden Sie den Abgleich und verarbeiten Sie die Anforderung entsprechend den aktuellen Abgleichregeln.

Aber grundsätzlich ist es nicht so kompliziert, es gibt 3 Punkte.

  1. Standardanforderung.
  2. Seitenanforderung.
  3. Hintergrundlogikanforderung.
#Direkte Zuordnung zum Website-Stamm. Es ist häufiger, über den Domänennamen auf die Homepage der Website zuzugreifen. Dies beschleunigt die Verarbeitung, heißt es auf der offiziellen Website. 
#Dies wird direkt an den Backend-Anwendungsserver weitergeleitet, oder es kann eine statische Homepage sein# Die erste erforderliche Regel location = / { 
  Proxy-Passwort http://tomcat:8080/index 
} 

# Die zweite obligatorische Regel besteht darin, statische Dateianforderungen zu verarbeiten. Dies ist die Stärke von nginx als HTTP-Server. # Es gibt zwei Konfigurationsmodi, Verzeichnisübereinstimmung oder Suffixübereinstimmung. Wählen Sie einen aus oder verwenden Sie beide Speicherorte ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { 
  Wurzel /webroot/res/; 
} 

#Die dritte Regel ist eine allgemeine Regel, die zum Weiterleiten dynamischer Anforderungen an den Back-End-Anwendungsserver verwendet wird. #Nicht statische Dateianforderungen sind standardmäßig dynamische Anforderungen, und Sie können sie entsprechend Ihrer tatsächlichen Situation erfassen. #Schließlich haben einige beliebte Frameworks mittlerweile selten die Suffixe .php und .jsp. location / { 
  Proxy-Passwort http://127.0.0.1:8080/ 
}

Zusammenfassen

Wenn Sie beispielsweise das Front-End-System und das Back-End-System gleichzeitig starten, können Sie zwei Server verwenden (Sie können den Host als API oder Administrator konfigurieren oder den Port direkt ändern) und jeder Server verfügt über drei Standorte, um die spezifische Seitenanforderung zu bestimmen.

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.

<<:  Grafisches Tutorial zur Installation von MySQL 5.5.27

>>:  Schreiben Sie ein React-ähnliches Framework von Grund auf

Artikel empfehlen

So aktualisieren Sie CentOS7 auf CentOS8 (detaillierte Schritte)

Dieser Artikel erläutert anhand eines konkreten B...

Methode für die Sicherheitseinstellungen des Tomcat-Servers

Tomcat ist ein HTTP-Server, der die offizielle Re...

Eine kleine Frage zur Ausführungsreihenfolge von SQL in MySQL

Ich bin heute bei der Arbeit auf ein SQL-Problem ...

So verwenden Sie worker_threads zum Erstellen neuer Threads in nodejs

Einführung Wie im vorherigen Artikel erwähnt, gib...

vue-element-admin global laden warten

Aktuelle Anforderungen: Globales Laden, alle Schn...

So legen Sie den Standardwert für den Datums-/Uhrzeittyp in MySQL fest

Beim Ändern des Standarddatums-/Uhrzeitwerts über...

W3C Tutorial (9): W3C XPath Aktivitäten

XPath ist eine Sprache zum Auswählen von Teilen v...

JavaScript zum Implementieren eines Dropdown-Listenauswahlfelds

In diesem Artikelbeispiel wird der spezifische Ja...

MySQL-Lernhinweise: Daten-Engine

Sehen Sie sich die von der aktuellen Datenbank un...