无法通过nginx连接到socket.io

时间:2013-09-26 14:36:05

标签: node.js nginx socket.io

我配置了 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 i.e io.connect('domain/node/')失败了,客户端的reposnse为“在此服务器上找不到请求的URL /socket.io/1/”,响应来自apache !! 但是任何其他节点请求都按预期进入节点服务器。 只有socket.io请求失败。

此外,如果我直接运行套接字连接URL,如浏览器请求中看到的那样 domain/node/socket.io/1/?t=1380201512328 工作得非常好,我可以在节点服务器上看到握手授权8wGgJYUvNdwAdcqenxQd

1 个答案:

答案 0 :(得分:0)

在客户端试试这个:)

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)

特别是因为你希望它看起来像(注意 / node ):

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)