我之前看一篇讲 WebSocket 的文章,里面提到了心跳机制,说是就算连接空闲也会定期发个小消息保持活跃,这样能减少断线的情况,你们项目里有用到吗?
日常生活·
· 发布于 2026-10-29 17:43:17
Nginx 反代后 WebSocket 老断连,最后是这两个参数的锅
今天处理一个项目站,用户反馈实时通知时好时坏,断了几秒又自动重连。第一反应是 keepalive 超时太短,查了下 proxy_read_timeout 确实只有60秒,但改到300s问题还在。后来抓包发现是反代层没带 Upgrade 头。补两行:proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 再顺手把 proxy_read_timeout 和 proxy_send_timeout 都调到 300s。重启 nginx -s reload 后连续观察40分钟,掉线次数从平均7次降到0。这类问题本质是 Nginx 默认按普通 HTTP 处理长连接,WebSocket 握手需要显式声明升级头,漏了就是偶发掉线,日志里还看不出明显报错。遇到类似实时功能不稳的可以先查这里。

