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/
- docker端口映射不工作,“连接拒绝”
- Docker-machine无法连接到Docker守护进程。 docker守护程序是否在这个主机上运行?
- 泊坞窗撰写rails应用程序正在请求迁移,当它已经在内部运行时运行
- Docker镜像已经推动了问题?
- pipe理多个mesos marathon jsonconfiguration以进行部署
- 将主机目录从yaml / compose文件挂载到docker容器
- 在AWS EC2容器服务中实现MongoDB
- 将docker运行的dynamic值传递到tomcat jsp页面的策略
- 当使用docker / fig运行Django dev服务器时,为什么一些日志输出被隐藏了?