Wenn Sie in NSX Data Center for vSphere 6.1.5 und höher x-forwarded-for
aktivieren, ändert sich der HTTP-Verbindungsmodus von passivem Schließen (option httpclose
) in die HTTP-Standardoption „server-close“ (option http-server-close
). Durch die Option „server-close“ bleibt die Clientverbindung offen, während die Verbindung mit Serverkontakt nach dem Empfang einer Antwort vom Server geschlossen wird. Vor NSX Data Center for vSphere 6.1.5 beendete der Load Balancer die Verbindung nicht proaktiv, sondern fügte die Connection:close
-Kopfzeile in beide Richtungen ein, um die Verbindung durch den Client oder Server zu schließen. Wenn eine HTTP/HTTPS-Transaktion beim Load Balancer nach dem Upgrade auf NSX Data Center for vSphere 6.1.5 oder höher fehlschlägt, fügen Sie eine Anwendungsregel mit dem Skript option httpclose
hinzu und ordnen Sie sie dem virtuellen Server zu, der nicht mehr ausgeführt wird.
HTTP-Server schließen (Standard) – Die Verbindung mit Serverkontakt wird beendet, nachdem das Ende der Antwort empfangen wurde, und die Verbindung mit Clientkontakt bleibt offen. „HTTP-Server schließen“ bietet Latenz auf Clientseite (langsames Netzwerk) und Wiederverwendung der schnellsten Sitzung auf Serverseite, um weniger Serverressourcen in Anspruch zu nehmen. Sie ermöglicht außerdem, dass nicht-keep-alive-fähige Server mit Hinblick auf den Client im Keep-alive-Modus bedient werden. Dieser Modus eignet sich für die am häufigsten auftretenden Anwendungsfälle, insbesondere für langsame Netzwerke mit Clientkontakt und schnelle Netzwerke mit Serverkontakt.
HTTP-Keep-alive – Alle Anforderungen und Antworten werden verarbeitet und Verbindungen bleiben offen, aber zwischen Antworten und neuen Anfragen im Leerlauf. Reduzierte Latenz zwischen Transaktionen und weniger erforderliche Verarbeitungsleistung auf Serverseite sind die Vorteile. Die Anforderungen an den Arbeitsspeicher werden erhöht, um die Anzahl der aktiven Sitzungen aufzunehmen. Diese Anzahl nimmt zu, da Verbindungen nicht mehr nach jeder Anforderung geschlossen werden. Der Leerlaufzeitüberschreitung für die Client-Verbindung kann mithilfe der Anwendungsregel timeout http-keep-alive [time]
konfiguriert werden. Standardmäßig beträgt die Leerlaufzeitüberschreitung 1 Sekunde. Dieser Modus ist zwingend erforderlich, wenn für eine Anwendung NTLM-Authentifizierung erforderlich ist.
HTTP-Tunnel – Nur die erste Anforderung und Antwort werden verarbeitet und es wird ein Tunnel zwischen Client und Server eingerichtet. Dadurch können sie ohne weitere Analysen des HTTP-Protokolls kommunizieren. Sobald der Tunnel eingerichtet ist, ist die Verbindung sowohl auf Client- als auch Serverseite persistent. Um diesen Modus zu aktivieren, sollte keine der folgenden Optionen festgelegt werden: passive-close mode
, server-close mode
, force-close mode
.
- Keine Protokollerstellung
- HTTP-Kopfzeilenanalyse
- HTTP-Kopfzeilenmanipulation
- Cookieverarbeitung
- Inhaltswechsel
- Einfügen der
X-Forwarded-For
-Kopfzeile
HTTP passiv schließen – Identisch mit Tunnelmodus, aber mit einer Connection: close
-Kopfzeile in Client- und Serverrichtung Beide Enden werden geschlossen, nachdem die erste Anforderung und Antwort ausgetauscht wurden. Wenn option httpclose
festgelegt ist, wird der NSX-Load Balancer im HTTP-Tunnelmodus ausgeführt. Er überprüft, ob die Connection: close
-Kopfzeile in beiden Richtungen vorhanden ist. Wenn die Kopfzeile nicht vorhanden ist, wird eine Connection: close
-Kopfzeile hinzugefügt. An beiden Enden wird dann aktiv die TCP-Verbindung nach jeder Übertragung geschlossen, sodass in den HTTP-Schließen-Modus gewechselt wird. Kopfzeilen von Verbindungen, die nicht close
lauten, werden entfernt. Anwendungen, die die zweite sowie nachfolgende Anforderungen nicht ordnungsgemäß verarbeiten können (z. B. ein eingefügtes Cookie durch den Load Balancer, das dann durch die folgenden Clientanfragen zurückübertragen wird), können den Tunnel- oder Passiv-schließen-Modus verwenden.
Einige HTTP-Server schließen nicht notwendigerweise die Verbindungen, wenn sie Connection: close
wie durch option httpclose
festgelegt erhalten. Wenn der Client auch nicht geschlossen wird, bleibt die Verbindung offen, bis die Zeitüberschreitung eintritt. Dies führt zu einer großen Anzahl simultaner Verbindungen auf den Servern und langen globalen Sitzungszeiten in den Protokollen. Aus diesem Grund sind sie nicht mit älteren HTTP-1.0-Browsern kompatibel. Falls dies passiert, verwenden Sie option forceclose
, wodurch die Anforderungsverbindung aktiv geschlossen wird, sobald der Server antwortet. Durch die Option forceclose
wird außerdem die Serververbindung früher geschlossen, da nicht auf die Bestätigung des Clients gewartet werden muss.
HTTP-schließen erzwingen – Sowohl Client als auch Serververbindungen werden am Ende einer Antwort aktiv vom Load Balancer geschlossen. Einige HTTP-Server schließen nicht notwendigerweise die Verbindungen, wenn sie Connection: close
wie durch option httpclose
festgelegt erhalten. Wenn der Client auch nicht geschlossen wird, bleibt die Verbindung offen, bis die Zeitüberschreitung eintritt. Dies führt zu einer großen Anzahl simultaner Verbindungen auf den Servern und langen globalen Sitzungszeiten in den Protokollen. In diesem Fall schließt option forceclose
den ausgehenden Serverkanal aktiv, wenn der Server nicht mehr reagiert und keine Ressourcen mehr freigegeben werden, wie zuvor mit option httpclose
.
Version | Standardverbindungsmodus | Verbindungsmodus, wenn X-Forwarded-Foraktiviert ist |
Verfügbare Anwendungsregeln zum Wechsel des Verbindungsmodus |
---|---|---|---|
6.0.x, 6.1.0, 6.1.1 | HTTP-Server schließen | option httpclose wird dem virtuellen Server automatisch hinzugefügt, um das Hinzufügen von xff zu den einzelnen Anforderungen zu erzwingen, wie im HAProxy-Dokument angegeben. Die xff -Kopfzeile wird jeder Anforderung vom Client bei der Übergabe an einen Backendserver hinzugefügt. |
Nein |
6.1.2–6.1.4 | HTTP-Server schließen | Passives HTTP-Schließen (option httpclose wird dem virtuellen Server automatisch hinzugefügt) |
|
6.1.5–6.1.x, 6.2.0–6.2.2 | HTTP-Server schließen | Die xff -Kopfzeile „HTTP-Server schließen“ wird jeder Anforderung vom Client bei der Übergabe an einen Backendserver hinzugefügt. |
|
6.2.3–6.2.5 | HTTP-Server schließen | Die xff -Kopfzeile „HTTP-Server schließen“ wird jeder Anforderung vom Client bei der Übergabe an einen Backendserver hinzugefügt. |
|
6.2.3–6.2.5 | HTTP-Server schließen | Die xff -Kopfzeile „HTTP-Server schließen“ wird jeder Anforderung vom Client bei der Übergabe an einen Backendserver hinzugefügt. |
|
6.2.5–6.2.x | HTTP-Server schließen | Die xff -Kopfzeile „HTTP-Server schließen“ wird jeder Anforderung vom Client bei der Übergabe an einen Backendserver hinzugefügt. |
|