簡體   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