Nginx übernimmt die Analyse des Implementierungsprozesses für HTTP-Anforderungen

Nginx übernimmt die Analyse des Implementierungsprozesses für HTTP-Anforderungen

Nginx entscheidet zunächst, welcher Serverblock in der Konfigurationsdatei für die Verarbeitung verwendet werden soll. Nehmen wir die folgende Serverkonfiguration an

Server {
  hören Sie 80;
  Servername aaa;
  ...
}

Server {
  hören Sie 80;
  Servername bbb;
  ...
}

Nginx bestimmt anhand des Wertes im Feld „Host“ im Header{} für eingehende HTTP-Anforderungen, welcher Server verwendet werden soll.

Wenn im Anforderungsheader kein Host-Feld vorhanden ist oder der Wert im Host-Feld nicht mit dem {server_name} im Server{} in der Nginx-Konfigurationsdatei übereinstimmt, wird der erste Server{} zum Verarbeiten der Anforderung verwendet.

Wenn der Wert im Feld „Host“ im Anforderungsheader mit dem {server_name} in einem Server{} in der Nginx-Konfigurationsdatei übereinstimmt, wird dieser Server{} zum Verarbeiten der Anforderung verwendet.

Mit dem Tool „curl“ können Sie problemlos Experimente durchführen. Mit „curl“ können Sie den Anforderungsheader der HTTP-Anforderung festlegen, sodass Sie das Host-Feld mit [-H] beliebig festlegen können. Die folgende 10.210.65.73 ist die IP-Adresse der Maschine, auf der nginx installiert ist.

Wenn Sie also den folgenden Befehl verwenden, verwendet nginx nach dem Senden der HTTP-Anforderung den Server {server_name aaa}, um die Anforderung zu verarbeiten.

curl.exe -H "Host: aaa" 10.210.65.73

Sehr wichtige Schlussfolgerung: Servername entspricht dem Wert des Host-Felds im HTTP-Anforderungsheader. Mit der oben genannten theoretischen Unterstützung ist es einfach, Reverse-Proxy und Lastausgleich einzurichten:

Wenn das Host-Feld im eingehenden HTTP-Anforderungsheader aaa ist, wird storage.test es verarbeiten.

Wenn das Host-Feld im eingehenden HTTP-Anforderungsheader bbb ist, wird tracker.test es verarbeiten.

  #Lastausgleichskonfiguration. Die Maschine mit der IP 129 hat eine hohe Konfiguration, daher wird ihr die Nummer 27 zugewiesen, damit sie mehr Upstream-Speicher handhaben kann.test {
   Server 10.210.65.129:80 Gewicht=27;
   Server 10.210.65.130:80 Gewicht=1;
  }

  #Lastausgleichskonfiguration Upstream Tracker.test {
   Server 10.210.65.52:80 Gewicht=7;
   Server 10.210.65.53:80 Gewicht=2;
  }

  #Dateispeicherserver {
    hören Sie 80;
    Servername aaa;
    Standort / {
      #Der Inhalt nach http::// ist selbstdefiniert und entspricht dem Upstream-Namen proxy_pass http://storage.test oben;
    }
  }

  #Dateiserver-Tracker
  Server {
    hören Sie 80;
    Servername bbb;

    Standort / {
      #Der Inhalt nach http::// ist selbstdefiniert und entspricht dem Upstream-Namen proxy_pass http://tracker.test;
    }

  }

Auf welchem ​​Port lauscht der Listen-In-Server{}?

Abgehört wird der Port des Prozesses (meistens Browser), der die HTTP-Anfrage sendet (bei einer HTTP-Anfrage ist der Port 80), nicht der Port des eigenen Prozesses des Nginx-Servers.

Nginx entscheidet, welcher Server zur Verarbeitung der HTTP-Anforderung verwendet wird, basierend auf dem Wert im Feld „Host“ des HTTP-Anforderungsheaders und dem Port des Prozesses, der die HTTP-Anforderung sendet (meistens der Browser).

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 Analyse jeder Phase der HTTP-Anforderungsverarbeitung von Nginx
  • Nginx implementiert ein Codebeispiel für die https-Websitekonfiguration
  • Detailliertes Tutorial zur Konfiguration von Nginx für https-verschlüsselten Zugriff
  • Implementierung der Nginx-Domänennamenweiterleitung für den HTTPS-Zugriff
  • Alibaba Cloud Nginx konfiguriert https, um ein Domänennamen-Zugriffsprojekt zu implementieren (grafisches Tutorial)
  • Nginx konfiguriert denselben Domänennamen, um sowohl den http- als auch den https-Zugriff zu unterstützen
  • Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt
  • Verwenden Sie nginx + sekundären Domänennamen + https-Unterstützung

<<:  Ein Beispiel für das elegante Schreiben von Urteilen in JavaScript

>>:  Mysql Sql-Anweisungsübungen (50 Fragen)

Artikel empfehlen

Das WeChat-Applet realisiert eine Links-Rechts-Verknüpfung

In diesem Artikel wird der spezifische Code für d...

Das Raster ist Ihr Layoutplan für die Seite

<br /> Englisches Original: http://desktoppu...

JavaScript zum Erreichen eines Mouse-Tailing-Effekts

Mauseffekte erfordern die Verwendung von setTimeo...

js zur Realisierung einer einfachen Scheibenuhr

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

Installieren Sie Ubuntu 18 ohne USB-Laufwerk unter Windows 10 mit EasyUEFI

1. BIOS überprüfen Überprüfen Sie zunächst, in we...

So speichern Sie „false“ oder „true“ in MySQL

Boolescher MySQL-Wert, speichert „false“ oder „tr...

Ein Artikel zum Umgang mit Mysql-Datums- und Zeitfunktionen

Inhaltsverzeichnis Vorwort 1. Aktuelle Uhrzeit er...

PNG-Alpha-Transparenz in IE6 (vollständige Sammlung)

Viele Leute sagen, dass IE6 PNG-Transparenz nicht...

Detaillierter Prozess zum Dekomprimieren und Installieren von mysql5.7.17 zip

1. Adresse herunterladen https://dev.mysql.com/do...

Drei Möglichkeiten zur Implementierung von Animationen in CSS3

Hiermit werden die Grundkenntnisse des Interviewt...

Was macht die MySQL-Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...