2012-03-15 77 views
0

我在同一台服务器上有两个不同的应用程序。其中一个在80端口(mydomain.com)上运行,另一个在端口443(sub.mydomain.com)上运行并具有通配符证书。Nginx + SSL + Rails + Juggernaut(Node.js)+ Engineyard

第一个应用程序仅用于信息目的,不需要websockets支持。 第二个应用程序应该有安全的websockets支持(wss协议)。

我试着在engineyard云上为我的rails应用程序和nginx服务器设置juggernaut gem(用于websockets),但是我遇到了一个问题。 Engineyard云只提供两个打开的端口:80和443.我知道nginx并不完全支持http 1.1反向代理,所以我不能使用nginx中的代理将websockets请求重定向到特定的本地端口(在我的情况下,这个端口是8080)。

我试过使用HAProxy,它适用于我,当我只使用不安全的websockets,但我需要支持安全的websockets。正如我所知,在这种情况下,我应该使用类似STunnel的东西来挖掘我的https请求并使用HAProxy,但是当我测试它时 - 我发现服务器必须工作几次,而且我仍然不能使用安全套接字连接:(

也许我做错了什么?也许有人会告诉如何设置nginx的多个应用程序(其中一个应该通过https工作)和安全的websockets使用只有两个端口(80和443)

ps我还使用了一个node-http-proxy,在这种情况下,我可以为不同的nginx应用程序设置代理,但是我没有运行websockets(只发生在通过nginx的“handshake”中,而不是“切换协议“)

+0

我绝对不知道如何解决你的问题(对不起),但我*可以*建议在ServerFault(也许超级用户)上提出这个问题,因为那些人​​群可能会更好地装备回答:) – 2012-03-15 20:07:32

回答

0

我在不久之前对各种反向代理和websocket进行了一些研究。底线是websocket是新的,现在对它的反向代理支持很差。

我看到的建议和我同意的是,您应该在不同的堆栈上运行您的websocket,而不是其余的项目。这通常意味着将其放在单独的域或子域中。

您仍然必须处理获取反向代理的复杂性,但如果您不必担心打破其他内容,它将变得更加简单。

此外,我同意,也许你会得到更好的答案在serverfault或超级用户。