1

我已经配置了nginx,这样任何 php 请求都会发送到 Apache 服务器,并且其中包含的任何 url都会发送到在8888/node/上运行的节点服务器,包括一个套接字侦听器。

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/')客户端的响应失败,因为“在此服务器上找不到请求的 URL /socket.io/1/”,响应来自 apache !!。但是任何其他节点请求都按预期发送到节点服务器。 只有 socket.io 请求失败。

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

4

1 回答 1

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)
于 2015-05-19T20:23:32.497 回答