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