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

Node+Express zum Erzielen eines Paging-Effekts

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

Vue-Tutorial zur erweiterten Verwendung dynamischer Komponenten

Inhaltsverzeichnis Grundlegende Beschreibung AST-...

Verständnis von Haslaylout- und BFC-Parsing

1. haslayout und bfc sind IE-spezifische und Stand...

Detaillierte Erklärung von Cgroup, dem Kernprinzip von Docker

Das leistungsstarke Tool cgroup im Kernel kann ni...

So zählen Sie die Anzahl bestimmter Zeichen in einer Datei unter Linux

Das Zählen der Nummer einer Zeichenfolge in einer...

So zeigen Sie den Startparameterbefehl „Docker Run“ an (empfohlen)

Verwenden Sie runlike, um die Docker Run-Startpar...

Vue + ElementUI implementiert Paging-Funktion - MySQL-Daten

Inhaltsverzeichnis 1. Problem 2. Lösung 2.1 Pagin...

So kapseln Sie Axios einfach in Vue

Axios in Vue einfügen importiere Axios von „Axios...

Koexistenz von Python2 und Python3 unter einem CentOS7-System

Der erste Schritt besteht darin, die Versionsnumm...

Lösung für das Problem ungenauer JS-Zahlen

Die verständlichste Erklärung des Genauigkeitspro...

Detaillierte Erläuterung der Tomcat-Konfigurations- und Optimierungslösungen

Service.xml Die Konfigurationsdatei Server.xml wi...

Standards zum Schreiben von Codekommentaren bei der Webseitenerstellung

<br />Ich habe die in meiner Arbeit verwende...