2026 年 OpenClaw Gateway 通过 Nginx 或 Caddy 反向代理与 HTTPS 暴露公网的示意图

2026 OpenClaw 公网访问实战:Gateway 反代、HTTPS 与端口放行——在远程 Mac(VNC)上可复现的最小 Nginx/Caddy 清单 🚀

约 17 分钟阅读
OpenClaw Gateway VNC 远程 Mac

当你需要在 Telegram、飞书、Webhook 或浏览器里稳定访问 OpenClaw 的 Gateway 控制台,又不想把高危端口直接裸露在公网 IP 上时,TLS 终止 + 反向代理几乎是 2026 年小团队的默认答案。本文面向已在裸机或远程 Mac 上跑通 OpenClaw、准备对外的进阶用户:说明何时必须上反代,给出Nginx 与 Caddy 的最小可用片段(含 WebSocket 头),整理本机防火墙、云安全组与端口 18789的核对顺序,并强调在 VNC 图形会话里如何一步步验证「本机通 → 反代通 → 公网通」。文末链到站内 Docker、常见报错与「无回复」排查文章,便于你做纵深排障。💡

① 痛点拆解:直连暴露 Gateway 会踩哪些坑?

  1. 明文 HTTP 与证书信任:公网入口若无 TLS,中间人、凭证泄露与浏览器混合内容警告风险显著上升;部分集成方也要求 HTTPS 回调。
  2. WebSocket / 长连接在朴素转发下易断:缺 Upgrade / Connection 与合适的超时,控制台可能表现为无限重连或「看似在线、消息不实时」。
  3. 端口与审计面过大:直接把应用端口映射到公网,扫描与爆破面扩大;反代层可做限流、IP 允许名单、WAF(若你有)与统一日志。
  4. 远程 Mac 场景下的「看不见本机防火墙」:仅 SSH 能连不代表 VNC 里看到的系统设置与云厂商安全组一致;常出现「本机 curl 通、外网不通」或反之。
  5. 与 Docker / launchd 监听地址不一致:监听在 127.0.0.10.0.0.0 的差别会直接影响你是否该把反代放在同一台机还是旁路。详见站内 Docker 实战文。

② 决策表:直连公网 vs 反代 + TLS

维度 直连暴露 Gateway 端口 反代 + TLS(Nginx/Caddy)
传输加密 需应用层自管证书或长期 HTTP 在边缘统一终止 TLS,后端可保持本机 HTTP
WebSocket 依赖应用与防火墙全路径支持 由反代显式配置升级头与超时(Nginx)或由 Caddy 自动处理
域名与多服务共存 一端口一服务,扩展性差 同 IP 多 server_name / 多站点路由
运维复杂度 初期少一层,长期安全债高 多一层组件,但安全与可观测性更好
远程 Mac(VNC)排障 现象分散在应用与网络 可在本机用 curl -v 分层定位:直连后端 vs 走 443

③ 何时必须上 Nginx/Caddy 反代?

  • 你需要固定域名 + HTTPS 对接 Webhook、OAuth 回调或团队书签,而不是记忆 IP:端口
  • 控制台或通道依赖实时连接,且你已在弱网或多层 NAT 下观察到断流。
  • 同一台远程 Mac 上还有其他 Web 服务,希望统一入口与证书续期。
  • 安全策略要求公网只开放 443/80,应用端口仅本机回环可见。
  • 你使用 openclaw doctor 或日志看到监听地址建议绑定回环,由反代作为唯一公网入口(具体以你版本输出为准)。

④ Nginx 最小片段:18789、Host 与 WebSocket

以下片段为教学向最小示例:请把域名、证书路径与上游端口换成你的真实值;生产环境还应补充限流、访问日志脱敏与更严格的 SSL 配置。

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 443 ssl http2;
    server_name claw.example.com;

    ssl_certificate     /etc/letsencrypt/live/claw.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/claw.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:18789;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}

要点:proxy_http_version 1.1Upgrade/Connection 成对出现;X-Forwarded-* 便于应用识别原始协议与客户端 IP;超时过短会导致长连接被提前掐断。

⑤ Caddy 最小片段:自动 HTTPS 与 reverse_proxy

若你希望减少证书运维成本,Caddy 的自动 HTTPS 很适合边缘节点(同样需 80/443 可达以完成 ACME)。

claw.example.com {
    reverse_proxy 127.0.0.1:18789
}

复杂场景可再加 header_up Host {host}、日志与 IP 限制;WebSocket 升级在多数版本下可由 reverse_proxy 自动协商,若仍异常再对照官方文档逐项加头。

⑥ 证书、DNS 与安全组:可执行核对顺序

1

DNS A/AAAA 指向公网入口

确认域名解析到正确公网 IP;若经 CDN,需放行 WebSocket 与证书校验所需路径。

2

云安全组 / ACL

入站至少放行 443(及证书签发所需的 80,若用 HTTP-01);应用端口 18789 建议仅本机或内网可见。

3

macOS 本机防火墙

在 VNC 系统设置中核对「阻止所有传入连接」是否误开;对 nginx/caddy 的入站规则与 OpenClaw 进程区分清楚。

4

证书续期与重载

Let's Encrypt 需自动化续期;续期后记得 nginx -s reload 或 Caddy 自动热加载,避免静默过期导致外网全红。

5

用 curl 分层验证

在远程 Mac 上:curl -v http://127.0.0.1:18789/curl -vk https://127.0.0.1/(若本机测 443)→ 外网机器再测域名。

补充:IP 允许名单与限流(可选但强烈建议)

若 Gateway 仅供小团队或固定回调源访问,可在反代层加 IP allowlistgeo / VPN 出口限制,把扫描与撞库噪声挡在应用之外。Nginx 可用 allow/deny 或云 WAF;Caddy 可用 @matcherremote_ip 等指令(以你版本文档为准)。限流方面,对登录与会话建立接口单独配置 limit_req 或等价机制,避免「控制台打不开」与「接口被刷爆」两种事故同时发生。

Webhook 场景下,务必核对上游服务出口 IP 段是否随时间变化;若平台提供签名密钥,优先验签而不是仅靠 IP。将允许名单与证书到期日写进运维日历,避免半年后无人记得为何突然 403。

⑦ VNC 远程 Mac 上「本机 → 反代 → 公网」七步验证

  1. 在 VNC 会话中打开「终端」,运行 openclaw doctor(或你版本等价命令),确认 Gateway 监听地址与端口与配置文件一致
  2. curl -v 打本机回环上游,确认 HTTP 状态码与重定向是否符合预期(可先忽略证书,专注链路)。
  3. 启动或重载 Nginx/Caddy,检查配置语法(如 nginx -t),确保无拼写错误。
  4. 本机通过 https://你的域名 访问控制台,观察浏览器开发者工具 Network 里 WebSocket 是否 101 Switching Protocols。
  5. 另一网络(手机 4G/同事热点)再测同一域名,排除「只在机房内网通」的假阳性。
  6. 记录反代与应用日志中的 request id / 时间戳,便于与 OpenClaw 日志对照(排障方法可参考《无回复》一文)。
  7. 变更防火墙或安全组后等待传播并复测;不要在未确认 443 真正对外开放前宣告「已上线」。

⑧ 可引用参数与 FAQ 衔接

可引用信息 1:公网入口建议遵循「443 终止 TLS → 回环上游」模式;上游端口是否用 18789 以 doctor 与实际配置为准,文档与社区示例常以此端口为控制台默认值。
可引用信息 2:反代层 proxy_read_timeout 过短(如默认 60s)可能导致长轮询/WebSocket 心跳异常;生产可先到 15–60 分钟量级再按监控调优,并结合应用侧 ping。
可引用信息 3:若你在容器内运行 OpenClaw,监听地址与宿主机端口映射需与反代一致;具体目录与卷挂载见站内《官方 Docker Compose 实战》,不要在未读该文的情况下混用宿主机与容器两套网络假设。

更多安装期报错、依赖与权限问题,请交叉阅读《2026 OpenClaw 常见报错与排查指南:从安装失败到运行异常的 10 个解决方案》;若通道「已连接但无文本回复」,按《OpenClaw「任务发出却无回复」排查实战》逐项核对 heartbeat 与日志。容器化部署则以《OpenClaw 官方 Docker 部署实战》为基线,再叠加本文反代层。

结语:为什么远程 Mac + VNC 仍然适合放反代与 Gateway?

把 Gateway 暴露到公网不是「改一个端口」这么简单,而是证书、长连接、防火墙与日志的组合题。纯 SSH 往往看不清 macOS 弹窗与本地浏览器里的 WebSocket 细节;在远程 Mac 上用 VNC 把桌面、终端与浏览器放在同一视线里,排障路径最短。若你本地没有长期闲置的 Mac,又希望按项目弹性开关环境,租赁一台可 VNC 的远程 Mac(如 VNCMac),在图形界面完成 doctor、反加重载与多端验证,通常比在低配 Windows/Linux 上硬凑兼容层更省时间;安全上仍建议反代收敛入口、最小开放端口,并把站内 Docker 与排错文章当作标准作业程序的一部分。

在远程 Mac 上安全暴露 OpenClaw Gateway

用 TLS + 反代收敛公网入口,在 VNC 里完成本机与多端验证,再把 Docker 与排错文章纳入固定流程。

  • 图形桌面便于 doctor、证书弹窗与浏览器 WebSocket 自检
  • 按节点弹性使用,适合小团队与外包联调
  • 结合站内 Docker、常见报错、无回复排查形成闭环