Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么我们不能在服务器设置(nginx、node js、负载平衡器)上使用websocket?它';他总是去xhr投票_Node.js_Nginx_Websocket_Socket.io_Load Balancing - Fatal编程技术网

Node.js 为什么我们不能在服务器设置(nginx、node js、负载平衡器)上使用websocket?它';他总是去xhr投票

Node.js 为什么我们不能在服务器设置(nginx、node js、负载平衡器)上使用websocket?它';他总是去xhr投票,node.js,nginx,websocket,socket.io,load-balancing,Node.js,Nginx,Websocket,Socket.io,Load Balancing,我们有一个带有Barracuda负载平衡器的web应用程序设置(运行3台服务器)。我们希望使用websocket(socket.io)实现节点js,但是如果请求通过负载平衡器发出,那么它总是会陷入xhr轮询(这太慢了) 以下是我们试图解决的问题: 我们已经在barracuda负载平衡器上向服务提供商开放了端口3000 在nginx配置上使用代理,如其他stackoverflow问题所述 将nginx版本升级至1.2.7,直至1.4.1 让我们感到困惑的是,如果我们只使用一台服务器,而不使用负

我们有一个带有Barracuda负载平衡器的web应用程序设置(运行3台服务器)。我们希望使用websocket(socket.io)实现节点js,但是如果请求通过负载平衡器发出,那么它总是会陷入xhr轮询(这太慢了)

以下是我们试图解决的问题:

  • 我们已经在barracuda负载平衡器上向服务提供商开放了端口3000
  • 在nginx配置上使用代理,如其他stackoverflow问题所述
  • 将nginx版本升级至1.2.7,直至1.4.1
让我们感到困惑的是,如果我们只使用一台服务器,而不使用负载平衡器,它将正常工作,但如果我们使用负载平衡器,它将无法通过websocket连接,并且总是返回xhr轮询

这是nginx错误日志得到的结果:

*14369 connect()连接到上游时失败(111:连接被拒绝),客户端:121.96.XX.XXX,服务器:www.example.co.uk,
请求:“GET/socket.io/HTTP/1.1”,上游:,主机:“www.example.co.uk”

尝试通过安全WebSocket(WSS)连接并终止后端节点上的TLS。IOW:执行L4负载平衡。我想你的梭鱼需要知道WebSocket才能进行L7负载平衡。是吗?是的,我们已经试过安全websocket了。你说得对,唯一的问题是barracuda LB上的配置。我们的提供商刚刚将呼叫从L7 HTTPS更改为安全TCP,并将其重定向到端口3000。谢谢