Cloudreve 上传大文件超时:Cloudflare 免费版 100 秒限制
症状
你看到什么?
Cloudreve 云盘通过 Cloudflare Tunnel 暴露到公网。上传一个 15MB 的文件,浏览器进度条走得很慢,大约 2 分钟后显示"上传失败"。Cloudreve 日志里看不到明显错误。
换小文件(<5MB)上传正常。大文件必挂。
根因
到底为什么出问题?
请求链路:
Cloudflare 免费版 HTTP 代理有硬性 100 秒超时。Cloudreve 默认分块大小较大(如 25MB),在网络慢的情况下,单块上传耗时 125 秒,超过 100 秒限制后 Cloudflare 直接切断连接。
这不是 Cloudreve 的 bug,也不是网络问题——是 Cloudflare 免费版的硬限制。付费版可以调超时时间(最长 600 秒)。
修复
怎么做?
去 Cloudreve 后台调整存储策略的分块大小:
- 登录 Cloudreve 管理后台(
/admin) - 仪表盘 → 存储策略 → 默认策略 → 编辑
- 调小分块大小:从默认 25MB 改成 5MB
- 保存
这样 15MB 文件分成 3 块上传,每块控制在 30-40 秒内,不会触发 100 秒限制。
如果还想更稳,可以:
- 进一步调小到 2MB(适合特别慢的网络)
- 升级 Cloudflare Pro($20/月,上传超时升到 600 秒)
怎么避免
下次怎么不踩?
- 算清楚链路超时:部署任何文件上传服务前,画出完整代理链路,确认每一跳的超时上限
- 分块大小公式:
分块大小(MB) < (超时上限(秒) - 20秒余量) × 最慢上行速度(MB/s) - Cloudflare 免费版红线:记住 100 秒 HTTP 请求超时 + 100MB 单文件上限
- 小文件验证:部署后先用 1MB → 5MB → 10MB → 20MB 递增测试,确认哪个大小开始挂