我正在使用Express.js创build一个服务器,我可以使用networking套接字连接。
即使它最终似乎工作(即,连接并将事件传递给客户端),我最初在Chrome的控制台中出现错误:
意外的回应码:502
在后端,socket.io只loggingwarn - websocket connection invalid
。
但是,nginxlogging这个:
2012/02/12 23:30:03 [error] 25061#0:* 81上游过早closures连接,同时从上游读取响应头,客户端: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开发运行: nginx version: nginx/1.1.14
所以它应该支持HTTP / 1.1。
另外请注意,如果我只是使用没有nginx的node.js服务器,它没有任何警告。
最后,这是我的nginxconfiguration文件:
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 维基 。
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> =)支持开箱即用的websocket!