繁体   English   中英

Nginx + SSL + Rails + Juggernaut(Node.js)+ Engineyard

[英]Nginx + SSL + Rails + Juggernaut (Node.js) + Engineyard

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

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

我试图在Engineyard Cloud上使用Nginx服务器为Rails应用设置剑圣宝石(用于websocket),但是我遇到了一个问题。 Engineyard云仅提供两个打开的端口:80和443。我知道nginx不完全支持http 1.1反向proxing,所以我不能使用nginx的proxing将websockets请求重定向到特定的本地端口(在我的情况下,该端口是8080)。

我尝试使用HAProxy,当我仅使用不安全的websocket时,它对我有用,但是我需要支持安全的websocket。 据我所知,在这种情况下,我应该使用诸如STunnel之类的东西来传送我的https请求而不是使用HAProxy,但是当我对其进行测试时-我发现服务器的工作速度必须慢上几倍,而我仍然无法使用安全套接字连接:(

也许我做错了什么? 也许有人会告诉您如何为多个应用程序设置nginx(其中一个应通过https运行)并仅使用两个端口(80和443)保护websocket的安全。

ps另外,我使用了node-http-proxy,在这种情况下,我能够为不同的nginx应用程序设置代理,但是我无法运行websocket(仅通过nginx发生在“握手”中,而不是在“交换协议”中发生)

不久前,我对各种反向代理和Websocket进行了一些研究。 最重要的是,websockets是新的,并且反向代理对它的支持现在很差。

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

您仍然必须处理使反向代理正常工作的复杂性,但是如果您不必担心破坏其他内容,它将变得不那么复杂。

另外,我同意,也许您会在serverfault或超级用户那里得到更好的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM