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

Ein Beispiel für die Implementierung eines adaptiven Quadrats mit CSS

Die traditionelle Methode besteht darin, ein Quad...

Beispiel zur Optimierung der MySQL-Einfügeleistung

MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...

Beispiel für die Implementierung einer Komponente mit fester Unterseite in Vue

Inhaltsverzeichnis 【Wirkung】 【Implementierungsmet...

Beispiel für einen Fork- und Mutex-Lock-Prozess im Linux-Multithreading

Inhaltsverzeichnis Frage: 1. Erster Versuch 2. Ra...

Vue3 manuelle Kapselung Popup-Box-Komponente Nachrichtenmethode

In diesem Artikel wird der spezifische Code der m...

Linux-Swap-Partition (ausführliche Erklärung)

Inhaltsverzeichnis linux 1. Was ist SWAP 2. Was p...

So finden Sie den angegebenen Inhalt einer großen Datei in Linux

Denken Sie im Großen und im Kleinen und lenken Si...

HTML ist die zentrale Grundlage für die Entwicklung von WEB-Standards

HTML-zentrierte Front-End-Entwicklung entspricht p...

js Drag & Drop-Tabelle zur Realisierung der Inhaltsberechnung

In diesem Artikelbeispiel wird der spezifische Co...

Details zur Verwendung von Bimface in Vue

Inhaltsverzeichnis 1. Installieren Sie das Vue-Ge...

Sechs mit CSS3 implementierte Randübergangseffekte

Sechs EffekteImplementierungscode html <h1>...

Benutzerdefinierter Kalendereffekt in JavaScript

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

So erstellen Sie schnell eine LAMP-Umgebung auf der CentOS-Plattform

Dieser Artikel beschreibt anhand eines Beispiels,...