当对代理的请求超时时,会发生什么 if/when 目标服务器最终开始响应?

When a request to a proxy times out, what happens if/when the destination server eventually gets around to responding?

我正在尝试诊断位于某些负载平衡器和代理后面的 Web 服务。在负载下,其中一台服务器开始出现 return HTTP 504 错误,这表明网关超时。有了这个背景,这是我的问题:

当代理向目标服务器发出请求,目标服务器收到请求但没有及时响应(从而超过超时),导致504时,目标服务器会发生什么情况最终有反应吗?它是否以某种方式知道请求者不再对响应感兴趣?它是否愉快地发送响应而不知道网关已经将 HTTP 错误响应发送回客户端?任何见解将不胜感激。

它依赖于实现,但任何符合 RFC 2616 第 8.1.2.1 节的代理都应在 504 上包含 Connection: close 并关闭与客户端的连接,以便它不再关联从失效的服务器连接返回的任何东西,也应该关闭。在负载下,这种情况下可能会出现竞争条件,因此您可能正在查看代理中的错误。

如果客户端随后想要发出更多请求,它将创建到代理的新连接,这将导致到后端的新连接。