![HAProxy 是否能够将 SSL 请求传递给 Apache + mod_ssl?](https://linux22.com/image/537726/HAProxy%20%E6%98%AF%E5%90%A6%E8%83%BD%E5%A4%9F%E5%B0%86%20SSL%20%E8%AF%B7%E6%B1%82%E4%BC%A0%E9%80%92%E7%BB%99%20Apache%20%2B%20mod_ssl%EF%BC%9F.png)
我读过的有关 HAProxy 和 SSL 的大多数文档似乎都建议在 SSL 到达 HAProxy 之前对其进行处理。大多数解决方案都侧重于使用 stunnel,少数解决方案建议在 HAProxy 前面使用 Apache + mod_ssl。
然而,我们的问题是,我们将 Apache 用作许多其他使用自己证书的站点的反向代理。理想情况下,我们希望 HAProxy 将所有 SSL 流量传递给 Apache,并让 Apache 处理 SSL 或反向代理。
我们当前的设置:
Apache Reverse Proxy -> Apache + mod_ssl -> Application
我想要做的事情:
HAProxy -> Apache Reverse Proxy -> Apache + mod_ssl -> Application
可以这样做吗?HAProxy 是否能够转发 SSL 流量并由其后面的服务器处理?
答案1
HAproxy 可以在 TCP 和 HTTP 模式下工作。在 TCP 模式下,它不会查看 TCP 数据包的内容,而只是在第 4 层对连接进行负载平衡。
因此,您可以在 SSL 流量上使用 HAproxy。它会工作得很好。但您不会从它包含的 HTTP 功能中受益。
答案2
由于我之前使用 Apache 独立于反向代理或应用程序工作来执行 SSL,因此我将 Apache 配置为接受 SSL 流量,然后将其转发到 HAProxy,后者随后会转发到 Web 场中的一台 Apache 服务器,即使那是执行 SSL 的原始服务器。
使用 stunnel 的尝试彻底失败了,直到我意识到 Apache 可以作为 HAProxy 的前端和后端。
我也可以听取 Julien 的建议,但我确实想要 HTTP 的好处,而不仅仅是 TCP 选项。