En NSX Data Center for vSphere 6.1.5 y versiones posteriores, cuando habilita x-forwarded-for, el modo de conexión HTTP cambia de cierre pasivo (option httpclose) al modo cierre de servidor HTTP (option http-server-close). Esta opción de cierre de servidor mantiene abierta la conexión orientada al cliente, mientras que la conexión orientada al servidor se cierra tras recibir una respuesta del servidor. Antes de NSX Data Center for vSphere 6.1.5, el equilibrador de carga de no cerraba la conexión de forma proactiva, pero insertaba el encabezado Connection:close en ambas direcciones para indicar al cliente o al servidor que cerraran la conexión. Si una transacción de HTTP/HTTPS falla en el equilibrador de carga después de actualizar a NSX Data Center for vSphere 6.1.5 o versiones posteriores, agregue una regla de aplicación con el script option httpclose y asóciela al servidor virtual que ya no está en funcionamiento.

Cierre de servidor HTTP (opción predeterminada): la conexión orientada al servidor se cierra una vez que se recibe el final de la respuesta y la conexión orientada al cliente permanece abierta. Cierre de servidor HTTP proporciona latencia en el lado cliente (red lenta) y hace que la sesión se vuelva a utilizar de forma más rápida en el lado servidor para ahorrar recursos del servidor. También permite a los servidores que funcionan sin conexión keep-alive funcionar con este tipo de conexión desde un punto de vista de cliente. Este modo es adecuado en la mayoría de los casos, sobre todo con redes lentas orientadas al cliente y redes rápidas orientadas al servidor.

HTTP Keep Alive - Todas las solicitudes y las respuestas se procesan y las conexiones permanecen abiertas, pero inactivas entre las respuestas y las solicitudes. Las ventajas son menor latencia entre las transacciones y menor necesidad de capacidad de procesamiento en el lado servidor. Los requisitos de memoria aumentarán para alojar al número de sesiones activas, que será mayor dado que las conexiones ya no se cierran después de cada solicitud. El tiempo de espera de inactividad del cliente se puede configurar con la regla de aplicación timeout http-keep-alive [time]. De forma predeterminada, el tiempo de espera de inactividad es 1 segundo. Este modo es obligatorio cuando una aplicación requiere autenticación NTLM.

Túnel HTTP: solo se procesan la primera solicitud y la primera respuesta y se establece un túnel entre el cliente y el servidor, lo que les permite comunicarse sin mayor análisis del protocolo HTTP. Tras establecer el túnel, la conexión permanece tanto en el lado de cliente como en el lado de servidor. Para habilitar este modo, ninguna de estas opciones debe estar configurada: passive-close mode, server-close mode y force-close mode.

El modo de túnel HTTP afecta a las siguientes funciones y se aplica solo a la primera solicitud y a la primera respuesta de una sesión:
  • no se generan registros
  • análisis del encabezado HTTP
  • manipulación de encabezado HTTP
  • procesamiento de cookies
  • conmutación de contenido
  • inserción del encabezado X-Forwarded-For

Cierre pasivo de HTTP: es igual que el modo de túnel, pero con un encabezado Connection: close agregado tanto en el lado cliente como en el lado servidor. Ambos extremos se cierran tras el primer intercambio de solicitud y de respuesta. Si se configura option httpclose, el equilibrador de carga funciona en el modo de túnel y comprueba si hay un encabezado Connection: close en cada lado. Si el encabezado no está presente, se agregará un encabezado de cierre de conexión Connection: close. A continuación, cada extremo cierra la conexión TCP de forma activa después de cada transferencia, lo que da lugar a un cambio al modo de cierre de HTTP. Se eliminará cualquier encabezado de conexión que no sea close. Las aplicaciones que no puedan procesar correctamente la segunda solicitud ni las posteriores, como una cookie insertada por el equilibrador de carga y retirada por las siguientes solicitudes del cliente, pueden usar el modo de túnel o el modo de cierre pasivo.

Algunos servidores HTTP no necesariamente cerrarán las conexiones al recibir la configuración Connection: close de option httpclose. Si el cliente tampoco cierra la conexión, esta permanecerá abierta hasta que el tiempo de espera se agote. Esto crea un gran número de conexiones simultáneas en los servidores y muestra una larga duración de la sesión global en los registros. Por este motivo, no son compatibles con navegadores antiguos HTTP 1.0. Si esto ocurre, utilice option forceclose, que cierra de forma activa la conexión de la solicitud una vez que el servidor responde. La opción forceclose también libera antes la conexión del servidor porque no tiene que esperar a que el cliente la confirme.

Cierre forzado de HTTP: el equilibrador de carga cierra de forma activa tanto las conexiones del servidor como las del cliente tras la finalización de una respuesta. Algunos servidores HTTP no necesariamente cerrarán las conexiones al recibir la configuración Connection: close de option httpclose. Si el cliente tampoco cierra la conexión, esta permanecerá abierta hasta que el tiempo de espera se agote. Esto crea un gran número de conexiones simultáneas en los servidores y muestra una larga duración de la sesión global en los registros. Cuando esto ocurre, option forceclose cierra de forma activa el canal del servidor de salida cuando el servidor acaba de responder y libera algunos recursos antes que si se utilizara con option httpclose.

Versión Modo de conexión predeterminada Modo de conexión cuando
X-Forwarded-For
se habilita
Reglas de aplicación disponibles para cambiar el modo de conexión
6.0.x, 6.1.0, 6.1.1 Cierre de servidor HTTP option httpclose se agrega automáticamente al servidor virtual para forzar que xff se agregue a todas las solicitudes según se especifica en el documento de HAProxy. El encabezado xff se agrega a cada solicitud del cliente cuando se realiza el envío a un servidor back-end. No
6.1.2 - 6.1.4 Cierre de servidor HTTP El cierre pasivo de HTTP (option httpclose se agrega automáticamente al servidor virtual)

no option http-server-close

option httpclose

no option httpclose

6.1.5 - 6.1.x 6.2.0 - 6.2.2 Cierre de servidor HTTP El encabezado xff de cierre de servidor HTTP se agrega a cada solicitud del cliente cuando se realiza el envío al servidor back-end.

no option http-server-close

option httpclose

no option httpclose

6.2.3-6.2.5 Cierre de servidor HTTP El encabezado xff de cierre de servidor HTTP se agrega a cada solicitud del cliente cuando se realiza el envío al servidor back-end.

no option http-server-close

option httpclose

no option httpclose

6.2.3-6.2.5 Cierre de servidor HTTP El encabezado xff de cierre de servidor HTTP se agrega a cada solicitud del cliente cuando se realiza el envío al servidor back-end.

no option http-server-close

no option httpclose

option httpclose

6.2.5 - 6.2.x Cierre de servidor HTTP El encabezado xff de cierre de servidor HTTP se agrega a cada solicitud del cliente cuando se realiza el envío al servidor back-end.

no option http-server-close

option http-keep-alive

option http-tunnel

option httpclose

option forceclose