如何修改 nginx.conf 提高文件上传大小限制?

修改 client_max_body_size(如 100m)即可提高上传上限,可放 http/server/location 层;改完 nginx -t + reload;PHP 等应用层限制要同步调大。本文给出完整步骤与配套参数。

最佳实践
如何修改 nginx.conf 提高文件上传大小限制?封面

核心改动:在 nginx.conf 里设置 client_max_body_size 100m;(默认仅 1MB)。放在 http 块全局生效、server 块按站点生效、location 块按路径生效;改完 nginx -t 校验并 reload。若应用是 PHP/Java 等,它们自身的上传限制也要同步放宽。

操作步骤

1. 定位主配置文件

nginx -t   # 输出会显示配置文件路径
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

2. 编辑并添加指令

http {
    client_max_body_size 100m;   # 全局放宽到 100MB
    ...
}

或只针对上传路径:

location /upload {
    client_max_body_size 500m;
}

3. 校验并生效

sudo nginx -t && sudo systemctl reload nginx

配套要调的地方

大文件上传还要放宽超时(体积大了传输慢,别体积过了时间关不过):

client_body_timeout 120s;
proxy_read_timeout 120s;     # 反代场景
fastcgi_read_timeout 120s;   # PHP-FPM 场景

应用层限制

  • PHP:upload_max_filesizepost_max_size(都要 ≥ Nginx 值)
  • Node/Express:express.json({ limit: '100mb' })
  • Spring:spring.servlet.multipart.max-file-size

前置链路:CDN/云 LB(Cloudflare 免费版 100MB)也有自己的上限。

验证

curl -F "file=@bigfile.zip" http://your-site/upload
# 不再返回 413 即生效

观测云对照

上传失败率纳入监控。 413/504 等上传相关错误码经 DataKit 采集解析后按接口统计,调整限制前后的失败率曲线直接验证改动效果。

常见问题(FAQ)

Q:设多大合适?
A:按业务真实需求定,宁小勿大;纯附件上传场景 50-100m 常见。设 0 为不限制,公网不建议。

Q:改了还是 413?
A:检查是否有多层配置覆盖(location 里的旧值)、是否 reload、是否前面还有 CDN/网关限制,见本系列《client_max_body_size 不生效》篇。

Q:超大文件(GB 级)怎么办?
A:别硬扛单请求——分片上传或对象存储预签名直传。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台