2013-03-14 70 views
0

我有一個nginx服務器爲webapp提供所有靜態內容。 該應用程序使用在node.js unsing socket.io中實現的websockets。 node.js後端正在監聽端口8000.如何讓nginx/1.3.14作爲代理與nodejs和socket.io一起工作

如果我通過端口8000在靜態傳送文件中包含socket-io.js文件,一切正常,但我已閱讀了一些關於使用nginx作爲代理處理8000端口內部

所以我#已經建立這樣的一個配置:

server { 

server_name domain.com; 
access_log /var/log/nginx/domaim.com.log; 
location/{ 
    root /home/app/static/; 
} 

location /socket/ { 
     proxy_pass http://127.0.0.1:8000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection $connection_upgrade; 
} 
} 

然後訪問通過domain.com/socket/到socket.io可能 (得到的信息歡迎到插座。 IO)。 另外,靜態內容交付 但我不能找到任何方式來加載通過端口「socket.io/socket.io.js」文件80

這有可能在一個乾淨的方式?

+2

這聽起來像你混淆兩兩件事:服務於靜態的JS文件是socket.io的一部分,與經過socket.io連接回到運行socket.io後端的node.js。您應該像其他任何JS文件一樣提供socket.io客戶端文件。 – 2013-03-14 00:24:21

+0

@代碼首先畫家THX。做了一些更改(將js嵌入到我的靜態文件夾中)。但奇怪的是當我連接io.connect('http://domain.com/socket'); socket.io似乎將網址更改爲http://domain.com/socket.io,然後再次失敗。所以我改變了位置到socket.io,現在它工作(但爲什麼是socket.io客戶端使用不同的URL連接作爲給定的?) – Bernhard 2013-03-14 00:47:41

+0

@CodePainters請看看這個:http://stackoverflow.com/questions/23103241/how-to-redirect-web-sockets-connection-through-nginx。我非常困在這裏 – 2014-04-16 08:37:07

回答

0

你可以使用socket.connect(url, {resource:'socket'})

默認的資源是socket.io

​​

相關問題