【问题标题】:Socket.io/WebSockets continuously reconnecting — issue with Nginx proxy configuration?Socket.io/WebSockets 不断重新连接——Nginx 代理配置问题?
【发布时间】:2013-04-21 05:24:44
【问题描述】:

我在我的 Node.js 应用程序中使用 Socket.IO。今天我第一次部署它,我注意到我的套接字不断重新连接。我在相应的套接字事件中将“连接”和“断开连接”记录到控制台,结果如下:

此外,似乎正在使用轮询技术,而我的浏览器肯定足够现代,可以使用 WebSockets — 所以我认为这是一个配置问题。当我在开发中运行 Node.js 且中间没有代理时,WebSocket 可以正常工作。

这是我的 Nginx 配置,它充当我的 Node.js 服务器的代理:

upstream reader.oliverjash.me {
  server 127.0.0.1:3000;
}

server {
  listen 80;
  server_name reader.oliverjash.me;
  access_log /var/log/nginx/reader.oliverjash.me.access.log;
  error_log /var/log/nginx/reader.oliverjash.me.error.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_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    proxy_pass http://reader.oliverjash.me;
    proxy_redirect off;
  }
}

我相信以下几行:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

在启用 WebSockets 方面很重要(根据this reference/tutorial)。在我添加这些之前,WebSockets 根本无法与代理一起使用。现在我似乎得到了民意调查,这总比没有好。

我的 Nginx 版本是 1.4.0 稳定版。

【问题讨论】:

    标签: sockets proxy nginx websocket socket.io


    【解决方案1】:

    原来问题是因为我已经集群了我的 Node 应用程序。添加了 Redis 作为 Socket.IO 的内存存储,这解决了我所有的问题! http://adamnengland.wordpress.com/2013/01/30/node-js-cluster-with-socket-io-and-express-3/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-12
      • 2017-06-01
      • 1970-01-01
      • 2020-03-01
      • 2012-05-06
      • 2016-10-08
      • 1970-01-01
      • 2017-08-18
      相关资源
      最近更新 更多