Socket.io/WebSockets不断重连——Nginx代理配置是否有问题?

3
我正在使用Socket.IO在我的Node.js应用程序中。今天我第一次部署它,然后发现我的sockets不停地重新连接。我在各自的socket事件中记录了“connect”和“disconnect”,以下是结果:
此外,当我的浏览器肯定足够现代以使用WebSockets时,似乎正在使用轮询技术 - 因此我认为这是配置问题。当我在没有中间代理的情况下运行Node.js时,WebSockets正常工作。
这是我的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至关重要(请参阅此参考/教程)。在添加它们之前,代理无法使用WebSockets。现在似乎可以获得轮询,虽然不是最好的方法。

我的Nginx版本是1.4.0稳定版。

1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接