简单寒暄
hi
little_jeff

hi Jeffrey 😁 有啥事?

为什么微信的消息不进站了?怎么回事你查查看
为什么微信的消息不进站了?怎么回事你查查看
little_jeff

查清楚了,情况如下:

问题不在我们这边。 上游微信 bridge 服务器(8.138.252.67)在 今天 17:52 之后停止推送消息了。本地一切正常:

  • Runtime 进程 ✅ (14:35 启动,运行中)
  • Nginx ✅
  • Cloudflare tunnel ✅
  • 17:52 之前的消息处理全部正常(AI投研群、未来一月交易学堂、私聊等都在正常回复)

最后一条消息是 17:52 肖子恺私聊问"你是谁",bot 也正常回了。之后就彻底断流。

大概率是上游 bridge 服务器那边的问题——最常见的是微信客户端被踢下线(session 过期),需要在那台机器上重新扫码登录。8.138.252.67 这台机器需要有人上去看一下微信是否还在线、bridge 进程是否活着。

little_jeff

排查完毕,根因找到了。总结一下:

问题:Cloudflare tunnel 虽然进程在跑,但已经断连了。公网访问 wxhook.little-jeff.com 返回 502 Bad Gateway,导致聚合机器人(juhebot)推送的微信消息 webhook 全部失败。

验证
- 本地 nginx → runtime 正常(HTTP 202)✅
- 公网 https://wxhook.little-jeff.com/nanobot/wechat_bridge/notify502
- cloudflared 进程今天 11:29 启动,但在 ~17:52 左右 tunnel 断了
- runtime / agent / scheduler 都健康

时间线:最后一条微信消息 17:52(肖子恺的"你是谁"),之后 1 小时 36 分钟零消息进站。

修复:重启 cloudflared tunnel 就行。要我执行吗?

执行
执行重启
little_jeff

公网仍然是 502。Tunnel 本身上线完全正常(4 条 QUIC 连接全部注册到 Cloudflare 新加坡节点),本地 nginx→runtime 也正常。问题不在我们这边。

根因:Cloudflare 上 wxhook.little-jeff.com 的 DNS 记录和 tunnel 的绑定断了。Tunnel 能连上 Cloudflare,但 Cloudflare 不知道要把 wxhook.little-jeff.com 的流量导给这个 tunnel。

你需要在 Cloudflare 后台修一下,两种方式都行:

  1. DNS 方式:进 little-jeff.com 的 DNS 设置,把 wxhook 的记录改成 CNAMEba97c248-df55-4163-ba79-19ea9305285f.cfargotunnel.com(开启代理/橙色云)

  2. Tunnel 方式:进 Zero Trust → Tunnels → 选这个 tunnel → Public Hostnames,确认 wxhook.little-jeff.com 还在列表里,service 指向 http://127.0.0.1:80

修完不需要重启任何东西,几秒钟就能通。

little_jeff

诊断完毕,我给你总结一下。


根因:Cloudflare DNS 和 tunnel 的绑定断了。

详细情况:
- cloudflared tunnel 在我们服务器上连接完全健康(4 路 QUIC 到新加坡边缘节点,pre-checks 全绿)
- 本地链路 nginx → runtime → agent 全部正常(HTTP 202)
- 但公网 https://wxhook.little-jeff.com/nanobot/health 返回 Cloudflare 502,说明 Cloudflare 边缘节点不知道把这个域名的流量路由到我们的 tunnel

这不是服务器问题,是 Cloudflare 控制台 里的配置问题。需要在 Cloudflare Dashboard 里检查:

  1. DNS 记录wxhook.little-jeff.com 的 CNAME 是否还指向 ba97c248-df55-4163-ba79-19ea9305285f.cfargotunnel.com
  2. Zero Trust → Tunnels:选中这个 tunnel,看 Public Hostname 里 wxhook.little-jeff.com 是否还在、是否指向 http://127.0.0.1:80

tunnel 配置文件和进程我都已经在服务器上重启好了,就等 Cloudflare 那边 DNS 指回来就能恢复。


你登 Cloudflare 看一下?还是你想直接在服务器上加个 nginx SSL + Let's Encrypt 证书,绕过 tunnel 直连?