EC2+Nginx部署的Node服务Websocket生产环境报1006如何调试?
Websocket 1006 错误排查及解决方案
Nginx 配置排查(90% 同场景问题出自该环节)
- 必须在 Websocket 对应的 location 块添加专用代理头规则,缺失配置会直接导致握手失败,必填配置如下:
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_http_version 1.1; # 按需调整超时时间,默认60s无数据会自动断连 proxy_read_timeout 86400s; proxy_send_timeout 86400s;
- 检查 location 路径匹配规则是否覆盖 Websocket 接口路径,避免 Websocket 请求被 REST 接口的规则拦截或者漏匹配
- 确认 Nginx 代理转发的端口和后端 Websocket 服务实际监听的端口一致,如果是同端口复用 HTTP 和 Websocket 能力,要确认后端服务本身支持该逻辑
后端服务排查
- 确认生产环境后端确实启动了 Websocket 监听逻辑,不要只单独启动了 REST 服务
- 生产环境如果启用了 HTTPS,Websocket 协议需要对应使用
wss://而非本地的ws://,如果 SSL 证书由 Nginx 统一托管,要确认证书配置有效、路径正确 - 检查后端跨域配置,Websocket 跨域校验逻辑和普通 HTTP 接口不同,需要显式放行前端域名的 Websocket 请求
连接参数排查
- Postman 测试时注意协议匹配:HTTPS 域名必须用
wss://前缀,用ws://会直接被拦截 - 确认连接地址没有多余后缀、端口拼写错误,比如本地地址是
ws://localhost:8080/ws,生产不要误写为wss://你的域名/ws/多带末尾斜杠 - 如果生产环境接入了 CDN 或者云 WAF 产品,要确认对应产品的 Websocket 能力已经手动开启,部分产品默认关闭该协议支持
内容的提问来源于stack exchange,提问作者Tosh Velaga
相关产品推荐
相关产品推荐

