带有 nginx 负载平衡器问题的 Socket.IO 集群

Posted

技术标签:

【中文标题】带有 nginx 负载平衡器问题的 Socket.IO 集群【英文标题】:Socket.IO Cluster with nginx load balancer issues 【发布时间】:2014-12-18 06:09:07 【问题描述】:

我正在运行 nginx 作为 Socket.IO 服务器的反向代理,该服务器在多个集群进程之间对请求进行负载平衡。每个集群进程都被告知监听不同的端口。

nginx 服务器配置为基于 IP 哈希进行负载平衡,但我收到消息:

ws://domain/socket.io/?EIO=3&transport=websocket&sid=KaU3C8caGVK4gU1LAAAB failed: WebSocket is closed before the connection is established.

我的 nginx 配置有:

http 
    + default configs

    upstream io_nodes 
        ip_hash;
        server 127.0.0.1:3000;
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
        server 127.0.0.1:3003;
    


默认虚拟主机:

server 
#listen   80; ## listen for ipv4; this line is default and implied
#listen   [::]:80 default ipv6only=on; ## listen for ipv6

root /usr/share/nginx/www/static/web;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name domain;

location / 
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_pass http://io_nodes;
     

任何帮助将不胜感激。如果我在没有集群的情况下运行 nodejs 服务器,它会正常运行,我用于此设置的参考位于:http://socket.io/docs/using-multiple-nodes/。

谢谢

【问题讨论】:

【参考方案1】:

我发现问题是安装的 nginx 版本

对于其他任何人,您可以查看如何在 ubuntu 上安装更新版本的 nginx:

http://usefulmix.com/install-upgrade-to-latest-nginx-without-compiling-from-source/

【讨论】:

以上是关于带有 nginx 负载平衡器问题的 Socket.IO 集群的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Fargate:应用程序负载均衡器返回 503 并带有奇怪的模式

谷歌HTTP负载平衡器无法升级的Web Socket连接

Magento 重定向 AWS 负载均衡器

如何为 NGINX 负载均衡器设置例外

使用 302 时 Nginx 负载均衡器错误

使用 302 时 Nginx 负载均衡器错误