Analyse des Konfigurationsprozesses der Nginx-HTTP-Integritätsprüfung

Analyse des Konfigurationsprozesses der Nginx-HTTP-Integritätsprüfung

Passive Prüfung

Mit passiven Integritätsprüfungen überwachen NGINX und NGINX Plus Ereignisse, sobald sie auftreten, und versuchen, fehlgeschlagene Verbindungen wiederherzustellen. Wenn die Wiederherstellung immer noch nicht möglich ist, markieren NGINX Open Source und NGINX Plus den Server als nicht verfügbar und senden vorübergehend keine Anfragen mehr an ihn, bis er wieder als aktiv markiert wird.

Die Bedingungen, unter denen ein Upstream-Server als nicht verfügbar markiert wird, werden für jeden Upstream-Server mit dem Upstream-Parameter der Server-Direktive im Include-Block definiert:

  • fail_timeout – Legt die Anzahl der fehlgeschlagenen Versuche fest, die erfolgen müssen, bevor der Server als nicht verfügbar markiert wird, und die Zeit, die vergeht, bis der Server als nicht verfügbar markiert wird (Standard ist 10 Sekunden).
  • max_fails – Legt die Anzahl der fehlgeschlagenen Versuche fest, die während des Fail_Timeout-Zeitraums auftreten müssen, damit der Server als nicht verfügbar markiert wird (Standard ist 1 Versuch). Wenn im folgenden Beispiel NGINX keine Anforderung an den Server senden kann oder innerhalb von 30 Sekunden dreimal keine Antwort erhält, gilt der Server 30 Sekunden lang als nicht verfügbar:
Upstream-Backend {
  Server backend1.example.com;
  Server backend2.example.com max_fails=3 Fail_timeout=30s;
}

Beachten Sie, dass die Parameter fail_timeout und max_fails ignoriert werden und der Server nie als nicht verfügbar markiert wird, wenn sich in der Gruppe nur ein einziger Server befindet.

Langsamer Start des Servers

Ein kürzlich wiederhergestellter Server kann leicht mit Verbindungen überlastet werden, was dazu führen kann, dass der Server erneut als nicht verfügbar markiert wird. Durch den langsamen Start kann ein Upstream-Server sein Gewicht nach der Wiederherstellung oder Wiederverfügbarkeit schrittweise von Null auf seinen Nennwert wiederherstellen. Dies kann durch die Angabe des slow_start-Parameters des Upstream-Servermoduls erfolgen:

Upstream-Backend {
  Server backend1.example.com langsamer_start=30s;
  Server backend2.example.com;
  Server 192.0.0.1-Sicherung;
}

Hinweis: Wenn sich nur ein Server in der Gruppe befindet, wird der Parameter „slow_start“ ignoriert und der Server wird nie als nicht verfügbar markiert. Der langsame Start ist eine Funktion, die exklusiv bei NGINX Plus verfügbar ist.

Aktive Prüfungen für NGINX Plus

NGINX Plus kann den Zustand von Upstream-Servern regelmäßig prüfen, indem es spezielle Integritätsprüfungsanforderungen an jeden Server sendet und die korrekten Antworten überprüft.

So aktivieren Sie aktive Integritätsprüfungen:

1. Fügen Sie die Direktive health_check in den Standortblock ein, der Anforderungen (proxy_pass) an die Upstream-Gruppe weiterleitet:

Server {
 Standort / {
   Proxy-Passwort http://backend;
   Gesundheitscheck;
 }
}

Dieses Snippet definiert einen Server, der alle Anfragen, die mit location / übereinstimmen, an die Upstream-Gruppe namens backend weiterleitet. Es ermöglicht außerdem eine erweiterte Integritätsüberwachung mithilfe der Direktive health_check: Standardmäßig sendet NGINX Plus alle fünf Sekunden eine Anfrage an jeden Server in der Gruppe für das „/“-Backend.

Wenn ein Kommunikationsfehler oder eine Zeitüberschreitung auftritt (der Server gibt einen Statuscode außerhalb des Bereichs 200-399 zurück), schlägt die Integritätsprüfung fehl. Der Server wird als fehlerhaft markiert und NGINX Plus sendet keine Client-Anfragen an ihn, bis er die Integritätsprüfungen erneut bestanden hat.

Optional: Sie können für die Integritätsprüfung einen anderen Port angeben, um beispielsweise die Integrität mehrerer Dienste auf demselben Host zu überwachen. Geben Sie den neuen Port mit dem Port-Parameter der Direktive „health_check“ an:

Server {
 Standort / {
   Proxy-Passwort http://backend;
   Gesundheitscheck-Port=8080;
 }
}

2. Definieren Sie in der Upstream-Servergruppe eine gemeinsam genutzte Speicherzone mit der Zonendirektive:

http {
 Upstream-Backend {
   Zone-Backend 64k;
   Server backend1.example.com;
   Server backend2.example.com;
   Server backend3.example.com;
   Server backend4.example.com;
 }
}

Dieser Bereich wird von allen Arbeitsprozessen gemeinsam genutzt und speichert die Konfiguration der Upstream-Gruppe. Dadurch können die Arbeitsprozesse denselben Satz von Leistungsindikatoren verwenden, um Antworten von den Servern in der Gruppe zu verfolgen.

Die Standardwerte für aktive Integritätsprüfungen können mit den Parametern der Direktive health_check überschrieben werden:

Standort / {
  Proxy-Passwort http://backend;
  Integritätsprüfungsintervall = 10, Fehler = 3, Durchläufe = 2;
}

Hier erhöht der Intervallparameter die Verzögerung zwischen den Integritätsprüfungen vom Standardwert von 5 Sekunden auf 10 Sekunden. Der Parameter „fails“ erfordert, dass ein Server drei Integritätsprüfungen nicht besteht, um ihn als fehlerhaft zu markieren (vom Standardwert ausgehend). Schließlich bedeutet der Parameter „passes“, dass der Server anstelle des Standardwerts zwei aufeinanderfolgende Prüfungen bestehen muss, bevor er wieder als fehlerfrei markiert werden kann.

Geben Sie die angeforderte URL an

Geben Sie den URI-Parameter in der Health_check-Direktive an, um die Route für Integritätsprüfanforderungen festzulegen:

Standort / {
  Proxy-Passwort http://backend;
  health_check uri=/irgendein/Pfad;
}

Die angegebene URI wird an den Serverdomänennamen oder die für den Server im Upstream-Block festgelegte IP-Adresse angehängt. Für den ersten Server in der oben deklarierten Beispiel-Backend-Gruppe würde die Integritätsprüfung die URI http://backend1.example.com/some/path anfordern.

Benutzerdefinierte Bedingungen definieren

Sie können benutzerdefinierte Bedingungen festlegen, die die Antwort erfüllen muss, damit der Server die Integritätsprüfung besteht. Die Bedingungen werden im Match-Block definiert, auf den im Match-Parameter der Health_check-Direktive verwiesen wird.

1. Geben Sie auf der http {}-Ebene einen match {}-Block an und vergeben Sie ihm einen Namen, zum Beispiel: „server_ok“

http {
 #... 
 Übereinstimmung mit server_ok {
   # Tests sind hier     
 }
}

2. health_check durch Angabe des Match-Parameters des Blocks und des Namens des Match-Parameter-Blocks:

http {
 #... 
 Übereinstimmung mit server_ok {
   Stand 200-399;
   body !~ "Wartungsmodus";
 }
 Server {
   #...     
   Standort / {
     Proxy-Passwort http://backend;
     Health_Check-Übereinstimmung=Server_OK;
   }
 }
}

Eine Integritätsprüfung wird bestanden, wenn die Antwort einen Statuscode im Bereich 200-399 hat und ihr Textkörper nicht die Zeichenfolge „Wartungsmodus“ enthält.

Die Match-Direktive ermöglicht es NGINX Plus, den Statuscode, die Headerfelder und den Antworttext zu untersuchen. Verwenden Sie diese Anweisung, um zu überprüfen, ob der Status innerhalb eines angegebenen Bereichs liegt, ob die Antwort Header enthält oder ob die Header oder der Text mit einem regulären Ausdruck übereinstimmen. Die Match-Direktive kann eine Statusbedingung, eine Body-Bedingung und mehrere Titelbedingungen enthalten. Damit der Server die Integritätsprüfung besteht, muss die Antwort alle im Match-Block definierten Bedingungen erfüllen.

Beispielsweise gleicht die folgende Match-Direktive Antworten mit dem Statuscode 200, einem Content-Type-Header mit dem genauen Wert text/html und dem Text auf der Seite ab: „Willkommen bei nginx!“.

Spiel willkommen {
  Status 200;
  Header-Inhaltstyp = Text/HTML;
  body ~ "Willkommen bei nginx!";
}

Im folgenden Beispiel wird ein Ausrufezeichen (!) verwendet, um Merkmale einer Antwort zu definieren, die eine Integritätsprüfung nicht bestehen dürfen. In diesem Fall wird die Integritätsprüfung mit einem anderen Statuscode als 301, 302, 303 oder 307 und ohne einen Refresh-Header bestanden.

Übereinstimmung mit nicht_weiterleiten {
  Stand! 301-303 307;
  Header! Aktualisieren;
}

Integritätsprüfungen können für andere Nicht-HTTP-Protokolle aktiviert werden, beispielsweise für FastCGI, Memcached, SCGI, uwsgi und sogar TCP und UDP.

Für viele gute Funktionen ist Nginx Plus zur Nutzung erforderlich.

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:
  • Detailliertes Tutorial zur Konfiguration von Nginx für https-verschlüsselten Zugriff
  • Alibaba Cloud Nginx konfiguriert https, um ein Domänennamen-Zugriffsprojekt zu implementieren (grafisches Tutorial)
  • Detaillierte Erläuterung des Prinzips und des Implementierungsprozesses der Nginx-Konfiguration https
  • Detaillierter Prozess zum Konfigurieren eines HTTPS-Zertifikats unter Nginx
  • 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
  • So konfigurieren Sie ein SSL-Zertifikat in Nginx, um den HTTPS-Dienst zu implementieren
  • Detaillierte Erläuterung der Frp-erzwungenen Umleitung zur https-Konfiguration unter Nginx
  • So installieren Sie Nginx in Docker und konfigurieren den Zugriff über https
  • Nginx-Konfiguration und -Kompatibilität mit der Codeanalyse der HTTP-Implementierung

<<:  Detaillierte Erläuterung der Metadatensperre, die Sie beim Ändern der MySQL-Tabellenstruktur kennen müssen

>>:  Detaillierte Erklärung, wie Node.js mit ES6-Modulen umgeht

Artikel empfehlen

Analyse der Prinzipien der MySQL Slow Query-bezogenen Parameter

MySQL Slow Query, dessen vollständiger Name „Slow...

8 leistungsstarke Techniken zum Erstellen von HTML-Webseiten

<br />Es gibt zwar viele Tools zum Erstellen...

So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx

Nginx-Optimierung --- Versionsnummer und Cache-Ze...

Neue Blockbereichsfunktion von JavaScript ES

Inhaltsverzeichnis 1. Was ist Blockbereich? 2. Wa...

So definieren Sie Eingabetyp=Dateistil

Warum die Dateisteuerung verschönern? Stellen Sie ...

Wissen Sie, wie Sie das Flash-Wmode-Attribut in Webseiten verwenden?

Bei der Webentwicklung kann es vorkommen, dass Fl...

Detaillierte Erläuterung der FTP-Umgebungskonfigurationslösung (vsftpd)

1. Installieren Sie die vsftpd-Komponente Install...

MySQL: MySQL-Funktionen

1. Integrierte Funktionen 1. Mathematische Funkti...

Lösungen für den Fehler und die Ungültigkeit beim Öffnen von nginx.pid

Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...

Detailliertes Tutorial zur Installation von Hbase 2.3.5 auf Vmware + Ubuntu18.04

Vorwort Im vorherigen Artikel wurde Hadoop instal...