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

Detaillierte Erklärung des Vue Notepad-Beispiels

In diesem Artikelbeispiel wird der spezifische Co...

Details zum Vergleich der MySQL-Datenkomprimierungsleistung

Inhaltsverzeichnis 1. Testumgebung 1.1 Hardware u...

So verwenden Sie CSS-Attributselektoren zum Spleißen von HTML-DNA

CSS-Attributselektoren sind großartig. Sie können...

So erhalten Sie Datums-/Uhrzeitdaten in MySQL, gefolgt von .0

Der Datentyp von MySQL ist datetime. Die in der D...

Verstehen Sie die Grundlagen von Navicat für MySQL in einem Artikel

Inhaltsverzeichnis 1. Datenbankbetrieb 2. Datenty...

React implementiert Paging-Effekt

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

Beispielcode, wie CSS mehrere Klassen abgleicht

CSS stimmt mit mehreren Klassen überein Das folge...

Erläuterung synthetischer React-Ereignisse

Inhaltsverzeichnis Klicken Sie zunächst auf das E...

Sechs Vererbungsmethoden in JS und ihre Vor- und Nachteile

Inhaltsverzeichnis Vorwort Vererbung von Prototyp...

Standards zum Schreiben von Codekommentaren bei der Webseitenerstellung

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