我在同一台服务器上有两个不同的应用程序。 其中一个在80端口(mydomain.com)上运行,另一个在端口443(sub.mydomain.com)上运行,并具有通配符证书。
第一个应用程序仅用于信息目的,不需要websockets支持。 第二个应用程序应该有安全的websockets支持(wss协议)。
我尝试在engineyard云上为我的rails应用程序和nginx服务器设置juggernaut gem(用于websockets),但是我遇到了一个问题。 Engineyard云只提供两个打开的端口:80和443.我知道nginx并不完全支持http 1.1反向代理,所以我不能使用nginx中的代理redirectwebsockets请求到特定的本地端口(在我的情况下,这个端口是8080)。
我试过使用HAProxy,它对我来说只是使用不安全的websocket,但是我需要支持安全的websocket。 正如我所知,在这种情况下,我应该使用像隧道隧道我的https请求,而不是使用HAProxy,但是当我testing它 – 我看到服务器必须工作几次慢,我仍然没有工作,使用安全套接字连接:(
也许我做错了什么? 也许有人会告诉如何为多个应用程序设置nginx(其中一个应该通过https工作),并使用两个端口(80和443)来保护websocket。
ps另外我用了一个node-http-proxy,在这种情况下,我可以为不同的nginx应用程序设置代理,但是我不能运行websockets(只发生在通过nginx的“handshake”上,而不是“切换协议”)
正常的反向代理不能用于websocket连接。 Nginx有一个补丁,增加了一个与websockets兼容的tcp代理function。
关于这个组合的好文章: http : //blog.mixu.net/2011/08/13/nginx-websockets-ssl-and-socket-io-deployment/