如何解决 Nginx 代理 WebSocket 时前端断线提示 Close Code 1006 的根源

胖静吖_4123

胖静吖_4123

2026-06-21

477人浏览

原创

1006是客户端tcp连接被无声切断时自动生成的哑状态,根源在于代理层(如nginx)未正确配置websocket透传或心跳超时,需确保http/1.1、upgrade/connection头透传、读写超时设置合理,并匹配心跳节奏。

如何解决 nginx 代理 websocket 时前端断线提示 close code 1006 的根源

1006 不是服务端发的错误码,而是客户端在 TCP 连接被无声切断、未收到任何关闭帧时自动生成的“哑状态”。它不带原因、不触发 onerror、event.reason 几乎总为空——真正要解决的,不是前端报错本身,而是定位并阻止中间某层(最常见就是 Nginx)提前 RST 断连。

检查 Nginx 是否完整透传 WebSocket 升级协议

Nginx 默认把 WebSocket 当普通 HTTP 处理,漏掉任意一项配置,连接就会在 60 秒后静默断开,现象全是 Close Code 1006。必须同时满足以下四点:

  • 启用 HTTP/1.1:proxy_http_version 1.1;(HTTP/1.0 不支持长连接与 Upgrade)
  • 透传 Upgrade 头:proxy_set_header Upgrade $http_upgrade;(注意是 $http_upgrade,不是 $upgrade 或漏掉 $)
  • 透传 Connection 头:proxy_set_header Connection "upgrade";(引号不能少,值必须是小写 "upgrade")
  • 禁用代理读写超时压制:proxy_read_timeout 300; 和 proxy_send_timeout 300;(建议统一设为 300,即 5 分钟;必须 ≥ 心跳间隔 × 2,且不能只配一个)

验证心跳节奏是否匹配代理耐性

心跳不是“有就行”,而是要跑在代理容忍窗口之内。如果心跳每 30 秒一次,但 proxy_read_timeout 只设了 60 秒,第二次 pong 还没回来,Nginx 就已发 RST。

PigX UI 前端开发
PigX UI 前端开发

PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。

下载
  • 服务端必须响应 PING 帧(RFC 6455 强制要求),不能忽略或延迟超过 10 秒
  • 推荐双向心跳:客户端发 PING,服务端也主动发 PING,避免单向保活失效
  • 心跳间隔建议 ≤ 45 秒(为 NAT、ALB、移动端回收等最短超时留出缓冲)

绕过代理直连快速定位问题源头

这是最快判断是否为 Nginx 问题的方法:

  • 将前端 WebSocket URL 改为 ws://:(跳过域名和 Nginx)
  • 若直连稳定无 1006,而走域名访问必现 1006,则 99% 是代理配置问题
  • 若直连也断,问题转向服务端(如 Node.js http.Server 默认 timeout)、网络设备(NAT/防火墙)或客户端(iOS 切后台回收)

警惕其他代理层的隐形超时

除了 Nginx,云网关常默默执行自己的断连策略:

  • AWS ALB:空闲超时固定 60 秒且不可调,需改用 NLB,或把心跳压到 ≤ 25 秒
  • Tencent Cloud CLB / 阿里云 SLB:部分版本默认 90 秒空闲超时,需在控制台显式调大
  • 企业防火墙或运营商 NAT:超时可能低至 90–300 秒,无法配置时只能靠更激进的心跳+客户端前置检测兜底

不复杂但容易忽略:1006 的本质是“连接被掐了却没人打招呼”,解决核心就三点——让代理真正理解 WebSocket、让心跳节奏压住所有环节的超时底线、让前端在发消息前主动确认连接状态。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2243

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4803

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5930

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5398

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

763

5

nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

383

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3207

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

5865

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

561

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习