[英]“websocket connection invalid” when using nginx on node.js server
我正在使用Express.js創建一個服務器,我可以使用Web套接字連接到該服務器。
即使它最終似乎有效(即連接並將事件傳遞給客戶端),我最初在Chrome的控制台中出錯:
意外的響應代碼:502
在后端,socket.io只記錄warn - websocket connection invalid
。
但是,nginx記錄了這個:
2012/02/12 23:30:03 [錯誤] 25061#0:* 81上游過早關閉連接,同時從上游讀取響應頭,客戶端:71.122.117.15,服務器:www.example.com,請求:“GET / socket .io / 1 / websocket / 1378920683898138448 HTTP / 1.1“,上游:” http://127.0.0.1:8090/socket.io/1/websocket/1378920683898138448 “,主持人:”www.example.com“
注意:我有nginx dev運行: nginx version: nginx/1.1.14
所以它應該支持HTTP / 1.1。
另請注意,如果我只使用沒有nginx的node.js服務器,它可以正常工作而不會發出任何警告。
最后,這是我的nginx配置文件:
server {
listen 0.0.0.0:80;
server_name www.example.com;
access_log /var/log/nginx/example.com.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://node;
proxy_redirect off;
}
}
upstream node {
server 127.0.0.1:8090;
}
任何幫助將不勝感激。 我嘗試了在這個問題中提出的解決方案,但這也沒有用。
nginx只在不穩定的1.1分支中有某種Web Socket支持。 請參閱Socket.IO wiki 。
Afaik目前只有少數穩定的基於Node.js的http代理正確支持Web套接字。
檢查node-http-proxy(我們使用這個):
https://github.com/nodejitsu/node-http-proxy
和彈性:
https://github.com/substack/bouncy
或者您可以使用純TCP代理,例如HAproxy
nginx(1.3.13> =)支持開箱即用的websockets!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.