我一直在寻找支持 SSL 的服务器集群的不同设置,我想与您一起对我的想法进行基准测试。
要求:
- 集群中的所有服务器都应使用相同的完整域名。(http 和 https)
- 到子系统的路由是通过 HA 代理中的 URI 匹配完成的。
- 所有 URI 都支持 SSL 支持。
希望:
集中路由规则
---<----http-----<-- | | Inet -->HA--+---https--->NGInx_SSL_1..N | | +---http---> Apache_1..M | +---http---> NodeJS
想法:配置 HA 将所有 SSL 流量(mode=tcp,algorithm=Source)路由到 NGInx 集群,将 https 流量转换为 http。将 http 流量从 NGInx 重新传递到 HA 进行正常负载平衡,HA 根据 HA 配置执行负载平衡。
我的问题很简单:这是根据上述要求进行配置的最佳方式吗?
答案1
我一直听说它的部署方式是,您将拥有多个负载均衡器,所有负载均衡器都运行 nginx(或 stunnel)来剥离 SSL。然后,这些负载均衡器将直接连接到后端服务器。您使用一组单独的服务器来解密 SSL 的方法似乎相当复杂。
说实话,你希望从这个设置中得到什么?你的流量对于一台服务器来说是否太大了?你是否希望获得高可用性(在这种情况下你需要多个 HAproxy 服务器,这会增加混乱)?
答案2
答案3
因此有两个选择...使用带有 xforwardfor 补丁的 stunnel
https://github.com/davean/stunnel-xforwardfor
这将允许您设置后端服务器要读取的标头
我只需将 nginx 放在它前面来处理 ssl 终止,并将 xforwardfor 标头设置回应用程序。将它放在与 haproxy 相同的服务器上。此外,您还可以使用 ngninx 根据路由进行回传,这样甚至不需要 haproxy。