支持 HTTP 1.1、SSL 和保持活动的替代反向代理?

支持 HTTP 1.1、SSL 和保持活动的替代反向代理?

我们目前正在使用 nginx,但我们需要使用 HTTP 1.1 将上游代理到 haproxy,而 nginx 的代理模块不支持它。

是否有一个可靠的、事件驱动的 nginx 替代方案,支持 HTTP 1.1、SSL 和客户端保持活动?

答案1

您真的需要在服务器端使用 http/1.1 吗,还是想要 keep-alive?1.1 并没有带来太多功能,基本上只有分块编码和“expect: 100-continue”。当服务器压缩时,分块编码效果很好,但情况并非如此。现在,如果您认为需要 keep-alive,只需考虑 nginx 和 haproxy 之间的网络延迟。如果两者都在同一个 LAN 上,您实际上根本不需要 keep-alive,因为建立连接的成本极小。许多人将 nginx 和 haproxy 链接在一起而没有任何问题,所以我认为您真的可以保留您的 nginx。

或者,您可以在 haproxy 前面使用 stunnel 来仅处理 SSL。然后,您将直接从 haproxy 获得客户端保持活动和 HTTP/1.1。

答案2

由于微软对 SSL 的非标准实现(可以谷歌搜索“Microsoft SSL close-notify”),在使用 MSIE 浏览器时,Keep-alive 和 SSL 并不是一个令人满意的组合。但是有一些迹象MS 在较新版本中可能会变得更好。

对于 mod_ssl,您可以配置不同的行为根据用户代理。这需要在 SSL 终止的地方完成 - 因为它需要解码 SSL 以找到用户代理 - 然后决定是否允许保持活动。由于 stunnel 对 HTTP 一无所知,因此您无法在代理上允许这样做。

因此,您可以尝试放入 stunnel(但它不会进行任何缓存)并希望获得最好的结果(在网络服务器上配置了保持活动)。

如果不进行进一步研究,我认为使用非缓存代理启用保持活动并在 ha-proxy 后面运行服务器没有多大意义 - 后者所做的只是基本负载平衡 - 您正在破坏故障转移。

尽管 HTTP/1.1 中的建议是将每个服务器名称的连接数限制为 2,但大多数浏览器开发人员已经意识到,这不会限制服务器的负载 - 唯一的效果是通过强制串行请求来减慢客户端的速度。因此,使用 keep-alive 的理由比以前少了。

因此,如果你想要选择性地控制保持活动,那么我认为唯一的选择是 apache + mod_ssl + mod_proxy

答案3

你可以试试或者可能

相关内容