在NSX Data Center for vSphere 6.1.5 及更高版本中,当启用 x-forwarded-for
时,HTTP 连接模式会从被动关闭 (option httpclose
) 更改为默认 HTTP 服务器关闭 (option http-server-close
) 模式。在从服务器收到响应后,服务器关闭选项会将面向客户端的连接保持打开状态,而关闭面向服务器的连接。对于 NSX Data Center for vSphere 6.1.5 之前的版本,负载平衡器不会主动关闭连接,而是在两个方向上插入 Connection:close
标头以指示客户端或服务器关闭连接。在升级到 NSX Data Center for vSphere 6.1.5 或更高版本后,如果 HTTP/HTTPS 事务在负载平衡器上失败,请使用脚本 option httpclose
添加一个应用程序规则,并将其与不再正常工作的虚拟服务器相关联。
HTTP 服务器关闭(默认)- 在收到响应结束后,关闭面向服务器的连接,并将面向客户端的连接保持打开状态。HTTP 服务器关闭在客户端提供延迟(慢速网络),并在服务器端提供最快的会话重用以节省服务器资源。从客户端角度而言,它还允许无法保持活动状态的服务器在保持活动状态的模式下提供服务。该模式适用于最常见的用例,尤其是面向客户端的慢速网络和面向服务器的快速网络。
HTTP 保持活动状态 - 处理所有请求和响应并将连接保持打开状态,但在响应和新请求之间闲置一段时间。优点是降低了事务之间的延迟,并减少了服务器端所需的处理开销。这种模式会增加内存需求以便满足更高的活动会话数要求,因为在每个请求后不再关闭连接。可以使用应用程序规则 timeout http-keep-alive [time]
配置面向客户端的闲置超时。默认情况下,闲置超时为 1 秒。如果应用程序需要使用 NTLM 身份验证,则必须使用该模式。
HTTP 隧道 - 仅处理第一个请求和响应,并在客户端和服务器之间建立隧道,以使它们能够进行通信,而无需进一步分析 HTTP 协议。建立隧道后,客户端和服务器端会永久保留连接。要启用此模式,不应设置以下任何选项:passive-close mode
、server-close mode
、force-close mode
。
- 不生成任何日志
- HTTP 标头分析
- HTTP 标头处理
- cookie 处理
- 内容交换
X-Forwarded-For
标头插入
HTTP 被动关闭 - 与隧道模式相同,但在客户端和服务器方向添加 Connection: close
标头。在第一个请求和响应交换后,将关闭两端。如果设置了 option httpclose
,则负载平衡器会在 HTTP 隧道模式下工作,并检查每个方向上是否具有 Connection: close
标头。如果没有该标头,则添加 Connection: close
标头。然后,每一端在每次传输后主动关闭 TCP 连接,从而导致切换到 HTTP 关闭模式。将移除 close
以外的任何连接标头。无法正确处理第二个和后续请求的应用程序(例如,负载平衡器插入一个 Cookie,然后客户端的后续请求重新加载该 Cookie)可以使用隧道模式或被动关闭模式。
在收到 option httpclose
设置的 Connection: close
时,某些 HTTP 服务器并不一定会关闭连接。如果客户端也未关闭,连接将保持打开状态,直至到达超时时间。这会导致在服务器上具有较高数量的同时连接,并在日志中显示较高的全局会话时间。因此,它们与较早的 HTTP 1.0 浏览器不兼容。如果发生这种情况,请使用 option forceclose
,它在服务器响应后主动关闭请求连接。forceclose
选项还会提前释放服务器连接,因为它不需要等待客户端进行确认。
HTTP 强制关闭 - 在响应结束后,负载平衡器主动关闭客户端和服务器连接。在收到 option httpclose
设置的 Connection: close
时,某些 HTTP 服务器并不一定会关闭连接。如果客户端也未关闭,连接将保持打开状态,直至到达超时时间。这会导致在服务器上具有较高数量的同时连接,并在日志中显示较高的全局会话时间。这种情况下,option forceclose
在服务器完成响应后会主动关闭出站服务器通道,并使用 option httpclose
先行释放某些资源。
版本 | 默认连接模式 | 启用 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 添加到虚拟服务器) |
|
6.1.5 - 6.1.x、6.2.0 - 6.2.2 | HTTP 服务器关闭 | 在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。 |
|
6.2.3 - 6.2.5 | HTTP 服务器关闭 | 在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。 |
|
6.2.3 - 6.2.5 | HTTP 服务器关闭 | 在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。 |
|
6.2.5 - 6.2.x | HTTP 服务器关闭 | 在发送到后端服务器时,将在客户端的每个请求中添加 HTTP 服务器关闭 xff 标头。 |
|