Loadbalancing,Websockets和NodeJS错误

我有两个NodeJS应用程序,socket.io位于本地(docker)NGINX负载均衡器后面。 文恩只有一个应用程序是一切正常。 当我添加第二次,我得到每秒重新加载或如此以下错误。

WebSocket connection to 'wss://[HOST]/socket.io/?EIO=3&transport=websocket&sid=9CmO27cJsdmqMwwXAAAK' failed: Error during WebSocket handshake: Unexpected response code: 400 

这里我的NGINXconfiguration:

 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { upstream myhost { least_conn; server 192.168.99.1:3333; server 192.168.99.1:4444; } server { listen 80; listen 443 ssl; server_name [HOST]; ssl_certificate server.crt; ssl_certificate_key server.key; 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://myhost; } } } 

您可能没有将socket.io设置为支持多个节点,在这种情况下,端口3333上的服务器可能会获取与服务器在端口4444上build立的连接有关的请求/帧(反之亦然),这会导致问题因为由3333build立的连接对于4444是未知的)。

这里列出了各种解决scheme: https : //socket.io/docs/using-multiple-nodes/