简体   繁体   English

无法使用node.js和nginx与socket.io连接

[英]Unable to connect with socket.io using node.js and nginx

I've set up a socket.io with node.js running behind nginx. 我已经设置了一个socket.io,其中node.js在nginx后面运行。 The main domain is running on nginx and sub-domain is being proxied to node.js. 主域在nginx上运行,子域正在代理node.js. All the REST APIs are working fine, but when it comes to socket connections, I do see the handshake in the logs, but client is not able to get response apparently. 所有REST API都运行正常,但是当涉及到套接字连接时,我确实看到了日志中的握手,但客户端显然无法获得响应。 Below is the log from node.js, and further below are the configs I'm using. 下面是来自node.js的日志,下面是我正在使用的配置。 Any ideas why it's not working? 任何想法为什么它不起作用?

info  - handshake authorized 7WtMDKRY1tPb97CORlJ4
debug - setting request GET /socket.io/1/websocket/7WtMDKRY1tPb97CORlJ4
debug - set heartbeat interval for client 7WtMDKRY1tPb97CORlJ4
debug - client authorized for 
debug - websocket writing 1::
debug - clearing poll timeout
debug - jsonppolling writing io.j[0]("8::");
debug - set close timeout for client JoDWOVTvLg7SdYpNRlJ2
debug - jsonppolling closed due to exceeded duration
debug - setting request GET /socket.io/1/xhr-polling/7WtMDKRY1tPb97CORlJ4?t=1368925686996
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 7WtMDKRY1tPb97CORlJ4
debug - setting request GET /socket.io/1/jsonp-polling/7WtMDKRY1tPb97CORlJ4?t=1368925696997&i=0
debug - setting poll timeout
debug - discarding transport
debug - clearing poll timeout
debug - clearing poll timeout
debug - jsonppolling writing io.j[0]("8::");
debug - set close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - jsonppolling closed due to exceeded duration
debug - setting request GET /socket.io/1/jsonp-polling/7WtMDKRY1tPb97CORlJ4?t=1368925717060&i=0
debug - setting poll timeout
debug - discarding transport
debug - cleared close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - clearing poll timeout
debug - jsonppolling writing io.j[0]("8::");
debug - set close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - jsonppolling closed due to exceeded duration
debug - setting request GET /socket.io/1/jsonp-polling/7WtMDKRY1tPb97CORlJ4?t=1368925737199&i=0
debug - setting poll timeout
debug - discarding transport
debug - cleared close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - fired close timeout for client JoDWOVTvLg7SdYpNRlJ2
info  - transport end (close timeout)

Nginx config: Nginx配置:

upstream app_yourdomain {
    server 127.0.0.1:3000;
}

# the nginx server instance
server {
    listen 80;
    server_name mydomain.com;

    # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options
    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_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      tcp_nodelay on;
      proxy_pass http://app_yourdomain/;
      proxy_redirect off;
    }
 }

Socket.io is running in 127.0.0.1:3000. Socket.io在127.0.0.1:3000中运行。

Are you running a new enough version of nginx? 你在运行一个足够新的nginx版本吗? WebSocket support was introduced in nginx version 1.3.13. 在nginx版本1.3.13中引入了WebSocket支持。 nginx -v to see what version you have. nginx -v看你有什么版本。 See also https://chrislea.com/2013/02/23/proxying-websockets-with-nginx/ 另见https://chrislea.com/2013/02/23/proxying-websockets-with-nginx/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM