是 OpenClaw 控制界面(Control UI)在访问端口 18789 时出现的 WebSocket 异常断开错误。WebSocket close code 1006 的含义是:连接异常终止,且没有收到正常的 close frame——通常意味着底层 TCP 连接被强制断开,而非应用层主动关闭。根据 GitHub Issue #19248(Ubuntu 24 + Node.js 22 环境下的精确复现),该错误最常见的三个根因依次是:设备配对未通过验证、反向代理未正确传递 WebSocket upgrade 头、Origin 安全校验失败。

1006 是最难排查的错误码,因为没有任何应用层信息,必须从网络层和配置层逐一排查。
OpenClaw 的 Control UI 实现了设备配对安全机制:首次通过浏览器访问 时,网关不会自动授权,而是生成一个待审批的 pairing request。若配对未完成,WebSocket 握手后立即断开,日志不会输出明显报错——只显示 。
诊断命令:
若看到 的记录,说明就是这个问题。
修复命令:
通过域名或 HTTPS 访问 OpenClaw Control UI 时,若反向代理没有正确传递 WebSocket upgrade 握手头,连接会在协议升级阶段被静默丢弃,表现为 1006 断连。
诊断方法:
- 绕过代理,直接访问
- 若直连正常而通过域名断连 → 确认是代理配置问题
Nginx 标准修复配置:
Caddy 配置(Caddy 原生支持 WebSocket,通常只需):
OpenClaw 对 WebSocket 连接来源做了 Origin 头校验,通过非 / 的域名访问时,若 Origin 头不在白名单内,连接会被拒绝并表现为 1006。
openclaw 配置修复方案 A:在 Nginx 中强制将 Origin 改写为 localhost(见上方 Nginx 配置)。
修复方案 B:在 OpenClaw 配置中开启宽松认证:
⚠️ 会降低安全性,仅推荐在内网可信环境使用,不建议公网暴露。
若不想配置反向代理,SSH 隧道是最简单可靠的远程访问方案,完全绕过 WebSocket upgrade 问题:
SSH 隧道通过加密通道传输,WebSocket 连接对本地浏览器来说就是直连 localhost,不经过任何中间层,彻底消除代理相关的 1006 错误。

若表现为规律性断连(每隔固定时间断开一次,自动重连后恢复),这与随机 1006 错误不同,根因通常在网络层:
排查步骤:
- 检查防火墙 / NAT 超时:企业防火墙和家用路由器通常对空闲 TCP 连接设置超时(常见值 5-15 分钟)。WebSocket 长连接若没有心跳保持,会被防火墙静默断开。
修复:在 Nginx 配置中增加 keepalive,或在 OpenClaw 中调整 WebSocket ping interval。
- 检查 Node.js GC 压力:
- 查看系统日志关联事件:
- 检查 Discord / Slack 插件心跳:若是特定渠道插件(Discord、Slack)定期断连,通常是平台侧的心跳超时,可升级对应插件版本或调整 health-monitor 重连间隔。
场景 1:首次安装后浏览器访问立即断连
→ 根因:设备配对未完成。执行 查看 pending 请求, 批准。
场景 2:本地访问正常,通过域名/Nginx 访问断连
→ 根因:Nginx 缺少 WebSocket upgrade 头。添加 和 。
场景 3:Ubuntu 服务器部署,飞书插件配置后断连
→ 根因:可能是 Origin 校验失败 + 设备配对双重问题。按 Issue #19248 的解法:先 ,再配置 Nginx Origin 头改写,或临时开启 。
场景 4:正常运行一段时间后规律性断连(每 10-15 分钟)
→ 根因:防火墙 / NAT TCP 超时,或 Node.js GC 压力导致心跳 ACK 延迟。排查 日志,必要时配置 TCP keepalive。
场景 5:更新版本后出现 4008 错误
→ 根因:已知 regression bug(Issue #42838、#41285)。回滚到上一稳定版本,或等待官方修复补丁。
Q: 能直接告诉我是哪个原因吗?
能检测守护进程状态、端口占用、配置文件格式等问题,但目前无法自动诊断 WebSocket 握手失败的具体原因。它更多用于排查安装配置问题,而非实时连接问题。建议配合 查看握手阶段的详细日志。
Q:开启了 还是断连怎么办?
只解决 Origin 校验问题,不解决设备配对和代理头问题。若开启后仍然断连,需要同步检查:(1) 是否有 pending 配对请求,(2) 代理是否正确传递了 和 头。
Q:不想自己折腾 Nginx 和设备配对,有没有更简单的方案?
有两种选择:(1) 使用 SSH 隧道(),本地直连无需配置代理;(2) 切换到 Linclaw(七牛云推出的 OpenClaw 桌面版),桌面端应用原生提供 Control UI,不存在 WebSocket 配对和代理配置问题。
Q:1006 错误日志里没有任何附加信息,怎么进一步排查?
1006 的特点就是无附加信息。最有效的排查方式是”排除法”:先用 确认 HTTP 层正常 → 再用 SSH 隧道测试绕过代理 → 再用 检查配对 → 最后抓包()观察 TCP 层断开时机。
OpenClaw 出现 的核心是 WebSocket 握手在底层被静默终止,三个最常见根因按排查优先级排序:① 设备配对未通过()→ ② 反向代理未配置 WebSocket upgrade 头(Nginx 配置修复)→ ③ Origin 安全校验失败( 或 Nginx Origin 改写)。定期断连(每 10-15 分钟)则通常是防火墙 / NAT TCP 超时所致,需在网络层解决。
据 GitHub Issue #19248(2026 年 2 月)和相关 issue 记录,上述三个根因覆盖了绝大多数 1006 断连报告。本文内容基于 2026 年 3 月 OpenClaw 公开 issue 整理,具体路径和命令随版本迭代可能变化,建议结合 确认所用版本。
延伸资源
- OpenClaw 官方 GitHub Issue #19248:https://github.com/openclaw/openclaw/issues/19248
- Linclaw 官网(无 WebSocket 配对问题的桌面版):https://linclaw.qnlinking.com/
发布者:Ai探索者,转载请注明出处:https://javaforall.net/278188.html原文链接:https://javaforall.net
