【问题标题】:"websocket connection invalid" when using nginx on node.js server在 node.js 服务器上使用 nginx 时出现“websocket 连接无效”
【发布时间】:2012-03-04 14:45:23
【问题描述】:

我正在使用 Express.js 创建一个服务器,我可以使用 Web 套接字连接到该服务器。

尽管它最终似乎可以工作(即连接并将事件传递给客户端),但我最初在 Chrome 的控制台中收到错误:

意外响应代码:502

在后端,socket.io 只记录warn - websocket connection invalid

但是,nginx 会记录以下内容:

2012/02/12 23:30:03 [错误] 25061#0: *81 上游过早关闭 从上游读取响应标头时连接,客户端: 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 服务器,它可以在没有任何警告的情况下工作。

最后,这是我的 nginx 配置文件:

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;
}

任何帮助将不胜感激。我尝试了question 中建议的修复方法,但也没有用。

【问题讨论】:

    标签: node.js nginx socket.io


    【解决方案1】:

    nginx 仅在不稳定的 1.1 分支中提供某种 Web Socket 支持。请参阅 Socket.IO wiki

    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!

    http://nginx.org/en/docs/http/websocket.html

    【讨论】:

    • 我以为它在 dev 分支中被支持?!
    • 我最终按照你的建议使用了bouncy,@Epeli。 nginx 1.1.14,很像 1.1.4 似乎不像这里所说的那样工作:注意:在撰写本文时 (v1.1.4),Nginx 1.1 仍然不支持 Web 套接字。
    • 我在 NGINX@1.1.16 中收到了类似的错误。它正在工作,但速度很慢,这可能意味着它使用了不同的传输机制。
    • 我在 NGINX 1.2.3 上看到了同样的问题,它应该可以工作。有人吗?
    • 我认为1.3.13是nginx第一个支持websockets的版本
    猜你喜欢
    • 2014-07-05
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2018-10-20
    • 2013-08-22
    • 1970-01-01
    • 2017-02-14
    • 2017-12-13
    相关资源
    最近更新 更多