2012-06-15 48 views
3

我一直在嘗試幾個小時,並已閱讀本網站和互聯網提供什麼。我似乎無法讓Socket.IO在這裏正常工作。我知道nginx默認不能處理Socket.IO,但是,HAproxy可以。我希望nginx通過unix套接字爲Node應用程序提供服務,這非常棒。每個目錄都有一個由nginx設置的子目錄位置,但是,現在我需要Socket.IO作爲最後一個應用程序,並且此時我正在丟失配置。Node.JS,HAproxy和Socket.IO通過NGINX,應用程序位於子目錄

我有最新的socket.io,HAproxy 1.4.8和nginx 1.2.1。運行Ubuntu。

所以重申一下,我需要通過nginx將socket.io工作到子目錄中的節點應用程序,例如:localhost/app /。

Diagram: 
WEB => HAproxy => Nginx => {/app1 app1, /app2 app2, /app3 app3} 

讓我現在如果我可以提供其他任何東西!

回答

0

沒有理由得到「通過nginx獲取socket.io工作」。相反,您只需將HAProxy直接路由到Socket.IO(中間沒有Nginx)。

我建議你結帳以下鏈接:

+0

我想這樣做的原因是我可以保留3個應用程序在端口80上運行,但是從unix套接字代理它們。所以如果有一種方法來配置它,或者類似的選擇,我會全力以赴。但是謝謝你! – film42

+0

更新:我明白你的意思@YorkshireKev有一個很好的例子,但你給了我一些資料。乾杯! – film42

0

你可以使用HAProxy的端口80上的不同端口上運行的前幾個的node.js應用程序。

E.g.

URL:80/APP1 - >的haproxy - >節點APP1:8080

URL:80/APP2 - >的haproxy - >節點APP2:8081

URL:80/APP3 - > HAProxy的 - >節點APP3:8083

UPDATE:

以下是請求路由到http://server:80/hello作出localhost:20001http://server:80/echolocalhost:20002

示例HAProxy的配置
 
backend hello 
    server hellosvr 127.0.0.1:20002 

backend echo 
    server echosvr 127.0.0.1:20001 

frontend http_in 
    option httpclose 
    option forwardfor except 127.0.0.1 # stunnel already adds the header 
    bind *:80 
    acl rec_hello path_beg /hello/ 
    use_backend hello if rec_hello 
    acl rec_echo path_beg /echo 
    use_backend echo if rec_echo 
+0

我想要做到這一點!我該怎麼做呢?! – ThomasReggi

+0

對不起@ThomasReggi我不知道我是怎麼想你是評論。我想你已經想通了,或者現在轉移...但爲了未來谷歌的利益,我會添加一個HAPROXY配置的工作摘要,將路由/ echopage和/ hello路由到不同的資源。 – YorkshireKev

相關問題