Dans NSX Data Center for vSphere 6.1.5 et versions ultérieures, lorsque vous activez x-forwarded-for, le mode de connexion HTTP passe de fermeture passive (option httpclose) au mode HTTP server-close par défaut (option http-server-close). L'option server-close maintient la connexion faisant face au client ouverte, tandis que la connexion faisant face au serveur est fermée dès que la réponse du serveur est reçue. Avant NSX Data Center for vSphere 6.1.5, l'équilibrage de charge ne fermait pas la connexion de manière proactive, mais insérait l'en-tête Connection:close dans les deux sens pour indiquer au client ou au serveur de fermer la connexion. Si une transaction HTTP/HTTPS échoue sur l'équilibrage de charge après la mise à niveau vers NSX Data Center for vSphere 6.1.5 ou version ultérieure, ajoutez une règle d'application avec l'option de script option httpclose et associez-la au serveur virtuel qui ne fonctionne plus.

HTTP Server Close (par défaut) : la connexion faisant face au serveur est fermée après la réception de la fin de la réponse, tandis que la connexion faisant face au client reste ouverte. HTTP Server Close introduit une latence côté client (lenteur réseau) et réutilise la session la plus rapide côté serveur pour préserver les ressources du serveur. Cela permet également aux serveurs compatibles avec la non-persistance d'être servis comme des serveurs persistants du point de vue du client. Ce mode est approprié pour les cas d'utilisation courants, particulièrement pour les réseaux lents faisant face au client et les réseaux rapides faisant face au serveur.

HTTP Keep Alive : toutes les demandes et réponses sont traitées et les connexions restent ouvertes mais inactives entre les réponses et les nouvelles demandes. Cela permet de réduire la latence entre les transactions ainsi que la puissance de traitement requise sur le serveur. La mémoire requise augmente en fonction du nombre de sessions actives. Dans le cas présent, la mémoire requise est plus élevée, car les connexions ne sont plus fermées après chaque demande. Le délai d'inactivité de la connexion faisant face au client peut être configuré à l'aide de la règle d'application timeout http-keep-alive [time]. Le délai d'expiration par défaut est de 1 seconde. Ce mode est obligatoire lorsqu'une application nécessite l'authentification NTLM.

HTTP Tunnel : seules la première demande et la première réponse sont traitées et un tunnel est établi entre le client et le serveur. Ceux-ci peuvent alors communiquer entre eux sans autre analyse du protocole HTTP. Une fois le tunnel établi, la connexion est persistante côté client et côté serveur. Pour activer ce mode, aucune des options suivantes ne doit être paramétrée : passive-close mode, server-close mode, force-close mode.

Le mode tunnel HTTP a une incidence sur les fonctionnalités suivantes et s'applique uniquement à la première demande et à la première réponse au cours d'une session :
  • aucun journal n'est généré
  • analyse des en-têtes HTTP
  • manipulation des en-têtes HTTP
  • traitement des cookies
  • commutation du contenu
  • insertion d'un en-tête X-Forwarded-For

Fermeture passive HTTP : similaire au mode tunnel à ceci près qu'un en-tête Connection: close est ajouté dans le sens du client et du serveur. Les deux points de terminaison se referment après l'échange de la première demande et de la première réponse. Si l'option option httpclose est définie, l'équilibrage de charge fonctionne en mode tunnel HTTP et vérifie la présence d'un en-tête Connection: close dans chaque sens. Si l'en-tête est absent, un en-tête Connection: close est ajouté. Chaque point de terminaison referme activement la connexion TCP après chaque transfert, ce qui entraîne une commutation vers le mode fermeture HTTP. Tout en-tête de connexion autre que close est supprimé. Le mode tunnel et le mode fermeture passive conviennent aux applications qui ne peuvent pas traiter correctement la deuxième demande et les demandes suivantes, comme dans le cas d'un cookie inséré par l'équilibrage de charge, puis présenté à nouveau par les demandes ultérieures du client.

Certains serveurs HTTP ne ferment pas nécessairement les connexions lorsqu'ils reçoivent l'en-tête Connection: close défini par l'option option httpclose. Si le client ne se ferme pas non plus, la connexion reste ouverte jusqu'à l'expiration du délai d'attente. Cela se traduit par un nombre important de connexions simultanées sur les serveurs et par des durées de sessions globales élevées consignées dans les journaux. Pour cette raison, ils ne sont pas compatibles avec les anciens navigateurs HTTP 1.0. Si cela se produit, utilisez l'option option forceclose, qui referme activement la connexion de la demande une fois que le serveur répond. L'option forceclose libère également la connexion au serveur plus tôt, car elle n'a pas besoin d'attendre l'accusé de réception du client.

Forcer la fermeture HTTP : l'équilibrage de charge ferme activement les connexions du client et du serveur sitôt la réponse terminée. Certains serveurs HTTP ne ferment pas nécessairement les connexions lorsqu'ils reçoivent l'en-tête Connection: close défini par l'option option httpclose. Si le client ne se ferme pas non plus, la connexion reste ouverte jusqu'à l'expiration du délai d'attente. Cela se traduit par un nombre important de connexions simultanées sur les serveurs et par des durées de sessions globales élevées consignées dans les journaux. Lorsque cela se produit, option forceclose ferme activement le canal serveur sortant lorsque le serveur a terminé de répondre et libère certaines ressources plus tôt qu'avec l'option option httpclose.

Version Mode de connexion par défaut Mode de connexion lorsque
X-Forwarded-For
est activé
Règles d'application disponibles pour changer de mode de connexion
6.0.x, 6.1.0, 6.1.1 HTTP Server Close L'option option httpclose est automatiquement ajoutée au serveur virtuel pour forcer l'ajout de xff à chaque demande, comme indiqué dans le document HAProxy. L'en-tête xff est ajouté dans chaque demande depuis le client lors de la distribution vers un serveur principal. Non
6.1.2 - 6.1.4 HTTP Server Close Option HTTP Passive Close (option httpclose est ajouté automatiquement au serveur virtuel)

no option http-server-close

option httpclose

no option httpclose

6.1.5 - 6.1.x 6.2.0 - 6.2.2 HTTP Server Close L'en-tête xff de fermeture du serveur HTTP est ajouté à chaque demande depuis le client lors de la distribution vers le serveur principal.

no option http-server-close

option httpclose

no option httpclose

6.2.3-6.2.5 HTTP Server Close L'en-tête xff de fermeture du serveur HTTP est ajouté à chaque demande depuis le client lors de la distribution vers le serveur principal.

no option http-server-close

option httpclose

no option httpclose

6.2.3-6.2.5 HTTP Server Close L'en-tête xff de fermeture du serveur HTTP est ajouté à chaque demande depuis le client lors de la distribution vers le serveur principal.

no option http-server-close

no option httpclose

option httpclose

6.2.5 - 6.2.x HTTP Server Close L'en-tête xff de fermeture du serveur HTTP est ajouté à chaque demande depuis le client lors de la distribution vers le serveur principal.

no option http-server-close

option http-keep-alive

option http-tunnel

option httpclose

option forceclose