发布于 Wed Apr 01 2026 08:00:00 GMT+0800 (中国标准时间)
部署Cloudflare运维
Cloudflare Tunnel 跑 AI 客服的生产化调优清单
用 Cloudflare Tunnel 跑 Chatwoot + Dify 看似一键搞定,生产环境隐藏着 WebSocket 断流、超时、监控盲点等坑。这里是一份清单。
默认配置容易出的 5 个问题#
- WebSocket 1 小时后被断开:默认连接超时
- 大文件上传失败:默认请求体上限 100 MB
- LLM 长响应被截断:Cloudflare 边缘默认 100 秒 HTTP 超时
- AI 流式响应在前端断断续续:缓冲层未关闭
- 没有指标可看:默认日志不写本地
调优清单#
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 直传