我在同一台服务器上有两个不同的应用程序。其中一个在80个端口(mydomain.com)上运行,另一个在端口443 (sub.mydomain.com)上运行,并且具有通配符证书。
第一个应用程序仅用于信息目的,不需要websockets支持。第二个应用程序应该具有安全的websockets (wss协议)。
我试图为我的rails应用程序(为websockets)在工程云上安装nginx服务器,但我有一个问题。Engineyard只提供两个打开的端口: 80和443。我知道nginx并不完全支持HTTP1.1反向代理,所以我不能使用从nginx来将websockets请求重定向到特定的本地端口(在我的例子中,这个端口是8080)。
我尝试过使用HAProxy,当我只使用不安全的websockets时,它对我来说是有用的,但是我需要支持安全的websockets。如我所知,在本例中,我应该使用类似于STunnel的东西来隧道我的https请求,而不是使用HAProxy,但是当我测试它时,我发现服务器的工作速度要慢几倍,而且我仍然没有使用安全套接字连接:
也许我做错了什么?也许有人会告诉我们如何为多个应用程序设置nginx (其中一个应该通过https工作),并且只使用两个端口(80和443)来保护websockets。
附注:此外,我还使用了一个节点-http-代理,在本例中,我能够为不同的nginx应用程序设置代理,但我没有运行websockets (仅用于通过nginx进行“握手”,而不是“交换协议”)。
发布于 2012-04-02 18:02:38
正常的反向代理对websocket连接不起作用。Nginx有一个补丁,它添加了一个与websockets兼容的tcp代理特性。
关于组合的好文章:http://blog.mixu.net/2011/08/13/nginx-websockets-ssl-and-socket-io-deployment/
https://serverfault.com/questions/370248
复制相似问题