我的设置是cloudflare - > nginx - > node.js服务器。我已经确认它不是node.js服务器。问题似乎是cloudflare和nginx的结合。它只适用于nginx和node.js。
这是nginx为websocket连接记录的内容:162.158.75.125 - - [29 / Oct / 2016:00:01:47 +0000]" GET / HTTP / 1.1" 101 1047" - " " Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 53.0.2785.143 Safari / 537.36"
nginx config:
server {
listen 443 ssl;
server_name vectorwar.io;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://localhost:7000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 31104000s;
proxy_connect_timeout 31104000s;
proxy_send_timeout 31104000s;
}
}
答案 0 :(得分:2)
您是否尝试过在没有SSL的情况下设置Websocket?
我有过使用SSL制作的Websockets在~45秒后自动断开连接的经验。使用不安全的连接固定。显然不太理想,但你可以试着看看它是否至少解决了断线问题。
答案 1 :(得分:0)
proxy_pass http://localhost:7000;
尝试向 http 添加一个 s
。然后重新加载nginx并重试,
service nginx reload
此外,Websockets 和 Cloudflare 不能很好地配合使用: Websocket disconnects with 1006 error, without a reason