我们有一个带有梭子鱼负载均衡器的 Web 应用程序设置(运行 3 个服务器)。我们想使用 websocket (socket.io) 实现节点 js,但如果请求来自负载均衡器,它总是陷入 xhr-polling (这太慢了)。
以下是我们尝试解决的问题:
- 我们已经在梭子鱼负载均衡器上向我们的服务提供商开放了 3000 端口
- 在 nginx 配置上使用代理,如在其他 stackoverflow 问题中讨论的那样。
- 将 nginx 版本升级到 1.2.7 到 1.4.1
令我们困惑的是,如果我们只使用一台服务器而不去负载均衡器,它会正常运行,但如果我们通过负载均衡器,它就无法通过 websocket 连接,并且总是回退到 xhr-polling。
这是 nginx 错误日志得到的:
*14369 connect() 在连接到上游时失败(111:连接被拒绝),客户端:121.96.XX.XXX,服务器:www.example.co.uk,请求:“GET /socket.io/ HTTP/1.1”,上游:“ http://192.168.XX.XXX:3000/socket.io/ ”,主机:“www.example.co.uk”