2015-05-26 65 views
2

我在我的應用程序中使用插座,我想從nginx的通過套接字連接的URL作爲代理url.I我做這樣的如何通過nginx的代理網址插座

我的套接字代碼

var socket = io.connect('/explorer/socket',{ 
     'reconnect': true, 
     'reconnection delay': 500 
    }); 

我的nginx的conf

location /explorer/socket { 
       proxy_pass http://xxx.xxx.xx.xxx:3000; 
     } 

,但它不工作,它連接到我的本地主機,但我想用我在nginx的定義我的代理URL連接。所以我怎麼能通過代理url內io.connect?

回答

2

你在nginx的configuartion改變這樣的

location /socket.io/ { 
       proxy_pass http://xxx.xxx.xx.xxx:3000; 
       proxy_pass http://127.0.0.1:8080; 
proxy_http_version 1.1; 

proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection 「upgrade」; 
proxy_read_timeout 86400; 

access_log off; 
error_log /opt/nginx/logs/websockets.error.log; 


     } 

1)/socket.io/ - 這將告訴nginx的你的套接字調用傳遞給給定IP

現在在你的套接字代碼更改

var socket = io.connect('/',{ 
     'reconnect': true, 
     'reconnection delay': 500 
    }); 
0

嘗試改變你的nginx.conf的位置如下;

location /explorer/socket { 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_http_version 1.1; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_pass http://xxx.xxx.xx.xxx:3000; 
} 

來源:http://nginx.com/blog/nginx-nodejs-websockets-socketio/

+0

感謝快速回復,但如何訪問它在插座代碼我的意思是無功插座= io.connect(「/資源管理器/插座」,{ 「重新連接」裏:真的, 「重新連接延遲」:500 }); –

+0

我不明白你想要訪問什麼? – cdagli

+0

我想在我的程序中使用套接字連接,如io.connect('http:// localhost:3000'),但我想在那裏,我將通過此網址從nginx稱爲代理網址,所以我怎麼能通過它,我在我的程序中不想提到localhost:8080,它應該來自nginx –