2026 运维OpenClawTLSWebSocket

2026 OpenClaw 置于 Nginx 或 Caddy 之后:TLS、WebSocket 与 allowedOrigins 生产清单

HTTPS 与真实域名后,OpenClaw 常现 403、WebSocket 掉线与 allowedOrigins 误拒。本文对比 NginxCaddy:边缘终结 TLS、保留 Upgrade/Connection、对齐浏览器来源;并链 网关 doctor生产加固云部署 FAQ,区分代理层与令牌/通道故障。

OpenClawNginxCaddyTLSWebSocketallowedOrigins
OpenClaw 网关经反向代理:TLS 与 WebSocket 示意图

代理上线后三类典型故障(以及常被忽略的连带坑)

第一,来源不一致触发浏览器安全策略。本地 http://127.0.0.1:18789 与线上 https://agents.example.com 不同源;Fetch/EventSource 与 allowedOrigins 逐项比对,缺协议、多斜杠、漏预发名都会假 403。各环境独立维护来源清单并做端到端验收。

第二,WebSocket 升级在代理层被「吃掉」。OpenClaw 控制台与部分通道桥依赖 HTTP/1.1 升级路径。从静态站抄来的反代片段若缺少 proxy_set_header Upgrade $http_upgrade;Connection "upgrade",会出现握手看似成功、随即被中间层缓冲或错误降级而断开。若同一监听端口强开 HTTP/2 又未给升级留出口,也会表现为「连上闪断」。实操上先用回环直连验证 WebSocket,再对公网域名做对比抓包或 curl -v,能快速判断问题在边缘还是应用。

第三,双重 TLS 或信任链混乱拖垮排障节奏。有人在 Node 内再开 HTTPS,同时 Nginx 也终结证书,容易出现协议或证书链不匹配;也有人做 TLS 透传却未按 SNI 分流,导致 ACME 校验失败。推荐单一故事线:公网客户端只与反向代理谈 TLS,代理到本机用明文回环(除非你在私有网格里刻意做 mTLS)。这样 renew、限速与访问日志都集中在边缘,运维心智负担最低。

威胁模型:为什么生产更推荐「代理在前、网关在环回」

生产应在边缘完成证书续期、TLS 策略、请求体上限与集中访问日志,再让流量进环回网关。Nginx 适合已有栈:map、错误页、限速成熟;Caddy 自动 HTTPS 上手快,仍需实测 WebSocket 与头部透传。

监听限回环;兼容令牌与通道密钥分存;X-Forwarded-For 仅信代理一跳;Webhook 先验签。多环境拆分 server 与 allowedOrigins;日志带统一请求 ID。

选型对比表:Nginx 与 Caddy 谁更划算

边缘方案最适合WebSocket 体验运维备注
Nginx + certbot已有 Nginx 承载 API 与静态资源需手写 Upgrade;同端口 HTTP/2 要谨慎自行维护 renew 与 nginx -t 流水线
Caddy 自动 HTTPS小团队想压低证书与配置 ceremony多数场景顺滑;自定义传输层要复测注意默认头行为与 Nginx 习惯差异
云负载均衡 + Nginx多可用区与 LB 健康检查LB 空闲超时可能要上调记录「双层超时」的计算方式
Node 直接 TLS内网网格 + mTLS升级路径原生,但失去统一 WAF 钩子对 Node 加密栈补丁节奏要求更高

选定边缘后,按 网关运维指南 的分层顺序演练:回环健康、网关 HTTP、doctor JSON、再测通道。跳过前面几步直接测 Telegram,常在 Nginx 已 502 时浪费数小时。

最小片段:回环上游、WebSocket 头、长读超时

替换主机名与联系邮箱;部署后用 curl -I https://你的域名/health一键验收的公网探活。注释留在 Git 里,避免后人「优化超时」把夜间看板静默打断。

# --- Nginx(示意 server 块)---
# proxy_pass http://127.0.0.1:18789;
# proxy_http_version 1.1;
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# proxy_read_timeout 3600s;
# proxy_send_timeout 3600s;

# --- Caddy(示意)---
# reverse_proxy 127.0.0.1:18789 {
#   header_up X-Forwarded-Proto {scheme}
#   header_up X-Forwarded-For {remote_host}
# }
# # 保持 WebSocket 透传;按需调 transport read_timeout

超时、缓冲与可观测性基线

承载交互 WebSocket 或长轮询的路由,建议 proxy_read_timeoutproxy_send_timeout 至少 3600 秒;照抄短 REST 默认值会误杀健康会话。纯 HTTP 兼容接口可维持六十到一百二十秒以便快速暴露卡死上游。

请求体上限要与 webhook、媒体拉取策略一致:若加固文将出站媒体抓取限制在二十兆字节量级,入站也应同量级封顶,防止恶意大包在网关解析前就耗尽磁盘。

常见问题、内链汇总与托管远程 Mac 何时更省心

doctor 全绿但浏览器仍 403,先看哪里?

查代理访问日志里返回 403 的路径:若 Nginx 已记一笔,响应多半未触及 OpenClaw;若仅应用日志出现 403,再核对 allowedOrigins 与鉴权头。

OpenAI 兼容路由要不要单独 server_name?

不强制,但许多团队把 /v1 流量拆到独立虚拟主机,以便对兼容 API 设不同限速与 WAF,而不影响运营控制台。

云 FAQ 里的防火墙段落能照搬吗?

作为基线使用,再补上代理 80/443、健康检查源 IP 与供应商 IPv6 范围即可。

小结:代理终结 TLS、显式 WebSocket 头、allowedOrigins 对齐真实来源;分层排障配合 doctor加固云 FAQ

边界:证书、代理与网关版本仍由你维护;若团队更在意 Apple 原生工具链与稳定入口、并希望把 SFTP 投递与长驻网关放在同一运维故事线,托管远程 Mac 常比自建每一跳网络更省时。

SFTPMAC 提供带运维照料的远程 Mac 容量,工程师可专注 OpenClaw 工作流;同一台机器也可承接 SFTP 产物与长驻网关,上行与在线率更可预期。

若希望用托管远程 Mac 统一网关入口与文件投递,可了解 SFTPMAC 方案与线路规格。