Cloudreve 上传大文件超时:Cloudflare 免费版 100 秒限制

📅 2026-06-13

症状

你看到什么?

Cloudreve 云盘通过 Cloudflare Tunnel 暴露到公网。上传一个 15MB 的文件,浏览器进度条走得很慢,大约 2 分钟后显示"上传失败"。Cloudreve 日志里看不到明显错误。

换小文件(<5MB)上传正常。大文件必挂。

根因

到底为什么出问题?

请求链路:

C l o u d f l a r e C D N ( 1 0 0 s ) c l o u d f l a r e d t u n n e l D o c k e r C l o u d r e v e : 5 2 1 2

Cloudflare 免费版 HTTP 代理有硬性 100 秒超时。Cloudreve 默认分块大小较大(如 25MB),在网络慢的情况下,单块上传耗时 125 秒,超过 100 秒限制后 Cloudflare 直接切断连接。

这不是 Cloudreve 的 bug,也不是网络问题——是 Cloudflare 免费版的硬限制。付费版可以调超时时间(最长 600 秒)。

修复

怎么做?

去 Cloudreve 后台调整存储策略的分块大小:

  1. 登录 Cloudreve 管理后台(/admin
  2. 仪表盘 → 存储策略 → 默认策略 → 编辑
  3. 调小分块大小:从默认 25MB 改成 5MB
  4. 保存

这样 15MB 文件分成 3 块上传,每块控制在 30-40 秒内,不会触发 100 秒限制。

如果还想更稳,可以:

  • 进一步调小到 2MB(适合特别慢的网络)
  • 升级 Cloudflare Pro($20/月,上传超时升到 600 秒)

怎么避免

下次怎么不踩?

  1. 算清楚链路超时:部署任何文件上传服务前,画出完整代理链路,确认每一跳的超时上限
  2. 分块大小公式分块大小(MB) < (超时上限(秒) - 20秒余量) × 最慢上行速度(MB/s)
  3. Cloudflare 免费版红线:记住 100 秒 HTTP 请求超时 + 100MB 单文件上限
  4. 小文件验证:部署后先用 1MB → 5MB → 10MB → 20MB 递增测试,确认哪个大小开始挂