我正在尝试弄清楚如何为需要 https 和 wss 连接的 socket.io 应用程序设置架构。我在网上找到了很多教程,建议你在 haproxy 前面使用 stud 或 stunnel 之类的东西,然后将未加密的流量路由到你的应用程序。如果我要走这条路,是否建议 haproxy 和 ssl 终止器位于不同的实例上,或者如果它们位于同一个 EC2 服务器实例上也可以?
如果我不想使用单独的 ssl 终止器,我可以使用 haproxy 来终止 ssl 吗?或者是否可以将这些 https 和 wss 连接代理到我的应用程序并让节点应用程序终止 ssl 本身?
答案1
上次我检查时,haproxy 仍然没有 SSL 终止功能。这就是为什么你看到建议将 stunnel 放在它前面以提供该功能的原因。
我认为,在同一系统上同时托管 stunnel 和 haproxy 通常没问题。即使是 EC2 微型实例也可以承载大量 SSL 流量,而大型实例在这方面表现更佳。您可能会遇到一些问题大规模其中,转发所有这些流量所需打开的套接字数量可能会达到限制,但这是一个很好的问题。
我确实知道一个支持 SSL 的负载均衡器,那就是磅。功能远不如 HAproxy,但如果您需要的只是 SSL 终端和一些后端服务器,那就足够了。不过,您可能需要构建自己的软件包,因此这可能就不行了。
答案2
尝试一下haproxy-1.5-dev12,它支持 SSL 卸载,将使您的生活更加轻松 :-)