在 NSX 6.1.5 和更高版本中,在启用 x-forwarded-for 时,HTTP 连接模式将从被动关闭 (option httpclose) 更改为默认 HTTP 服务器关闭 (option http-server-close) 模式。在从服务器收到响应后,这会将面向客户端的连接保持打开状态,而关闭面向服务器的连接。对于 NSX 6.1.5 之前的版本,NSX 负载平衡器不会主动关闭连接,而是在两个方向上插入“Connection:close”标头以指示客户端或服务器关闭连接。在升级到 NSX 6.1.5 或更高版本后,如果 HTTP/HTTPS 事务在 NSX 负载平衡器上失败,请使用脚本 option httpclose 添加一个应用程序规则,并将其与不再正常工作的虚拟服务器相关联。

HTTP 服务器关闭(默认)- 在收到响应结束后,关闭面向服务器的连接,并将面向客户端的连接保持打开状态。HTTP 服务器关闭在客户端提供延迟(慢速网络),并在服务器端提供最快的会话重用以节省服务器资源。从客户端角度而言,它还允许无法保持活动状态的服务器在保持活动状态的模式下提供服务。该模式适用于最常见的用例,尤其是面向客户端的慢速网络和面向服务器的快速网络。

HTTP 保持活动状态 - 处理所有请求和响应并将连接保持打开状态,但在响应和新请求之间闲置一段时间。优点是降低了事务之间的延迟,并减少了服务器端所需的处理开销。请注意,这种模式会增加内存需求以便满足更高的活动会话数要求,因为在每个请求后不再关闭连接。可以通过应用程序规则“timeout http-keep-alive [time]”配置面向客户端的闲置超时。默认情况下,闲置超时为 1 秒。如果应用程序需要使用 NTLM 身份验证,则必须使用该模式。

HTTP 隧道 - 仅处理第一个请求和响应,并在客户端和服务器之间建立隧道,以使它们能够进行通信,而无需进一步分析 HTTP 协议。一旦建立隧道后,将在客户端和服务器端永久保留连接。要启用该模式,不应设置任何以下选项:passive-close、server-close、force-close。

HTTP 隧道模式影响以下功能,并且仅适用于会话中的第一个请求和响应:

  • 不生成任何日志

  • HTTP 标头分析

  • HTTP 标头处理

  • cookie 处理

  • 内容交换

  • 插入 X-Forwarded-For 标头

HTTP 被动关闭 - 与隧道模式相同,但在客户端和服务器方向添加“Connection: close”标头。在第一个请求和响应交换后,将关闭两端。如果设置了“option httpclose”,则 NSX 负载平衡器在 HTTP 隧道模式下工作,并检查在每个方向上是否具有“Connection: close”标头。如果没有该标头,则添加“Connection: close”标头。然后,每一端在每次传输后主动关闭 TCP 连接,从而导致切换到 HTTP 关闭模式。将移除“close”以外的任何连接标头。无法正确处理第二个和后续请求的应用程序(例如,NSX 负载平衡器插入一个 cookie,然后客户端的后续请求重新加载该 cookie)可以使用隧道模式或被动关闭模式。

在收到“option httpclose”设置的“Connection: close”时,某些 HTTP 服务器并不一定会关闭连接。如果客户端也未关闭,连接将保持打开状态,直至到达超时时间。这会导致在服务器上具有较高数量的同时连接,并在日志中显示较高的全局会话时间。因此,它们与较早的 HTTP 1.0 浏览器不兼容。如果发生这种情况,请使用“option forceclose”,它在服务器响应后主动关闭请求连接。“forceclose”选项还会提前释放服务器连接,因为它不需要等待客户端进行确认。

HTTP 强制关闭 - 在响应结束后,NSX 负载平衡器主动关闭客户端和服务器连接。在收到“option httpclose”设置的“Connection: close”时,某些 HTTP 服务器并不一定会关闭连接。如果客户端也未关闭,连接将保持打开状态,直至到达超时时间。这会导致在服务器上具有较高数量的同时连接,并在日志中显示较高的全局会话时间。在发生这种情况时,“option forceclose”在服务器完成响应时立即主动关闭出站服务器通道,并提前释放某些资源(相对于“option httpclose”)。

NSX

默认连接模式

启用 X-Forwarded-For 时的连接模式

可用于切换连接模式的应用程序规则

6.0.x、6.1.0、6.1.1

HTTP 服务器关闭

在虚拟服务器中自动添加“option httpclose”,以便在 HAProxy 文档中指定的每个请求中强制添加 xff。在发送到后端服务器时,将在客户端的每个请求中添加 xff 标头。

6.1.2 - 6.1.4

HTTP 服务器关闭

HTTP 被动关闭(在虚拟服务器中自动添加“option httpclose”)

“no option http-server-close”

“option httpclose”

“no option httpclose”

6.1.5 - 6.1.x、6.2.0 - 6.2.2

HTTP 服务器关闭

在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。

“no option http-server-close”

“option httpclose”

“no option httpclose”

6.2.3 - 6.2.5

HTTP 服务器关闭

在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。

“no option http-server-close”

“option httpclose”

“no option httpclose”

6.2.3 - 6.2.5

HTTP 服务器关闭

在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。

“no option http-server-close”

“no option httpclose”

“option httpclose”

6.2.5 - 6.2.x

HTTP 服务器关闭

在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。

“no option http-server-close”

“option http-keep-alive”

“option http-tunnel”

“option httpclose”

“option forceclose”