Nextcloud 分享下载超过 1G 会中断:改 Nginx FastCGI

分享链接下载大文件到约 1G 中断时,在 nginx.conf 的 http 块提高 fastcgi_max_temp_file_size。

百度网盘对分享链接管得越来越严之后,我改用 Nextcloud 自建网盘 给别人传大文件。用着顺畅,直到踩到一个坑:

通过分享链接下载时,文件超过约 1G,下到 1G 左右就会中断。

小文件没事,大安装包、视频备份必现,对「当网盘用」的场景几乎不可接受。

原因

排查到是前面 Nginx + FastCGI 的临时文件大小限制。默认或过小的 fastcgi_max_temp_file_size 会让大响应在缓冲到一定体积后失败,表现就是下载断在约 1G。

解决办法

编辑 Nginx 配置(我当时路径是 /usr/local/nginx/conf/nginx.conf),在 http { ... } 里加上:

fastcgi_max_temp_file_size  10240m;

并把允许下载的文件大小相关限制调到你业务需要的上限(按你的 client_max_body_size、PHP/occ 侧超时与内存一并检查)。改完后:

nginx -t && nginx -s reload

再测超过 1G 的分享下载,应能完整下完。

相关排查

  • 若前面还有 CDN / 反向代理,也要看对方的 body / 超时限制;
  • PHP-FPM 的 request_terminate_timeout、Nextcloud 与 Web 服务器超时要匹配大文件场景;
  • 磁盘要留足 FastCGI 临时文件空间。

为何记下

自建网盘是一人公司常见基建。分享链接「大文件下到一半断」优先怀疑代理层缓冲上限,而不是 Nextcloud 业务代码。把 fastcgi_max_temp_file_size 写进备忘,下次换机器部署少踩一次。

No comments yet