无法通过nginx连接到socket.io

我configuration了nginx ,以便任何php请求都转到Apache服务器,并且任何带有/node/ url都会转到8888上运行的节点服务器(包括套接字侦听器)。

nginx.conf如下

 server { listen 80; server_name http://domain; location / { proxy_pass http://localhost:8080; } location /node { rewrite ^/node(.+)$ $1 break; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://localhost:8888; } } 

现在的问题是,一个socket.io request ie io.connect('domain/node/')与客户端作为“所请求的URL /socket.io/1/没有在这台服务器上find”的回收失败,响应从Apache服务! 但是任何其他的节点请求都会按照预期进入节点服务器。 只有socket.io请求失败。

另外,如果我直接运行sockets连接URL,如浏览器请求中所示,看起来像
domain/node/socket.io/1/?t=1380201512328工作得很好,我可以在节点服务器上看到handshake 8wGgJYUvNdwAdcqenxQd

试试这在客户端:)

var socket = io.connect(' https:// localhost ',{path:'/node/socket.io'});

我也有这个问题,但你需要指定路径,以便客户端不会发送请求到这样的事情:

 GET https://localhost/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_p…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1432066804506-0 504 (Gateway Time-out) 

特别是因为你想它看起来像(通知/节点 ):

 GET https://localhost/node/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_sdk_p…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1432066804506-0 504 (Gateway Time-out)