我在同一台服务器上有两个不同的应用程序。其中一个在 80 端口 (mydomain.com) 上运行,另一个在端口 443 (sub.mydomain.com) 上运行,并具有通配符证书。
第一个应用程序仅供参考,不需要 websockets 支持。第二个应用程序应该有安全的 websockets 支持(wss 协议)。
我尝试使用engineyard云上的nginx服务器为我的rails应用程序设置juggernaut gem(用于websockets),但我有一个问题。Engineyard cloud 只提供两个开放端口:80 和 443。我知道 nginx 不完全支持 http 1.1 反向代理,所以我不能使用 nginx 的代理将 websockets 请求重定向到特定的本地端口(在我的情况下,这个端口是8080)。
我尝试使用 HAProxy,当我只使用不安全的 websockets 时它对我有用,但我需要支持安全 websockets。正如我所知,在这种情况下,我应该使用 STunnel 之类的东西来传输我的 https 请求而不是使用 HAProxy,但是当我测试它时 - 我看到服务器的工作速度必须慢几倍,而我仍然无法使用安全套接字联系 :(
也许我做错了什么?也许有人会告诉如何为多个应用程序设置 nginx(其中一个应该通过 https 工作)并仅使用两个端口(80 和 443)保护 websockets。
ps我也使用了node-http-proxy,在这种情况下,我能够为不同的nginx应用程序设置代理,但我没有运行websockets(仅发生在通过nginx的“握手”,而不是“切换协议”)