flag92 flag92
博客
发布于 Wed Apr 01 2026 08:00:00 GMT+0800 (中国标准时间)
部署Cloudflare运维

Cloudflare Tunnel 跑 AI 客服的生产化调优清单

用 Cloudflare Tunnel 跑 Chatwoot + Dify 看似一键搞定,生产环境隐藏着 WebSocket 断流、超时、监控盲点等坑。这里是一份清单。

默认配置容易出的 5 个问题#

  1. WebSocket 1 小时后被断开:默认连接超时
  2. 大文件上传失败:默认请求体上限 100 MB
  3. LLM 长响应被截断:Cloudflare 边缘默认 100 秒 HTTP 超时
  4. AI 流式响应在前端断断续续:缓冲层未关闭
  5. 没有指标可看:默认日志不写本地

调优清单#

1. 关闭代理缓冲#

# config.yml
tunnel: <UUID>
ingress:
  - hostname: support.yourdomain.com
    service: http://localhost:3000
    originRequest:
      noTLSVerify: false
      connectTimeout: 30s
      keepAliveConnections: 100
      keepAliveTimeout: 90s
      disableChunkedEncoding: false
  - service: http_status:404

2. 关键路径单独配置#

/api/streaming/* 用更长的超时:

  - hostname: dify.yourdomain.com
    path: /api/.*/streaming.*
    service: http://localhost:5001
    originRequest:
      connectTimeout: 30s
      tlsTimeout: 10s
      tcpKeepAlive: 30s
  - hostname: dify.yourdomain.com
    service: http://localhost:5001

3. Cloudflare Dashboard 上设置#

设置项路径
请求体大小Rules → Configuration Rules按需调到 500 MB
缓存绕过Caching → Cache Rules/api/* /cable 设 Bypass
响应缓冲Speed → Optimization关闭 Rocket Loader、Auto Minify

4. 监控#

把 Tunnel 的 metrics 暴露到 Prometheus:

metrics: 0.0.0.0:8081

然后 Prometheus + Grafana 抓 cloudflared_tunnel_* 指标。

5. 高可用:双 Tunnel#

生产环境跑两个 cloudflared 进程(不同主机),同一个 Tunnel UUID 即可自动负载均衡。

不推荐用 Tunnel 的情况#

  • 极致延迟敏感(实时语音)→ 直接公网 + Cloudflare 前置
  • 单机 < 8GB 内存 → cloudflared 也吃内存
  • 大量上传文件 → 走专门的 R2 直传

站内搜索

按 ⌘ K 随时唤起