Nginx设置请求大小限制,控制上传文件大小

当网站上传大文件时出现 413 Request Entity Too Large,多数情况是 Nginx 的请求体大小限制在起作用。
Nginx 通过 client_max_body_size 指令控制单个请求允许的最大体积,默认值通常为 1MB,超过限制就会直接拒绝。
本文按零基础可照做的顺序,讲清配置位置、修改命令、重载方式和验证结果,帮你彻底解决上传大小限制问题。

先确认是不是 Nginx 在拦截

浏览器按 F12 打开开发者工具,切换到 Network 面板,再次上传文件。
如果看到状态码 413,基本可以确定是 Nginx 限制。
也可以查看 Nginx 错误日志确认:

tail -f /var/log/nginx/error.log

日志中出现 client intended to send too large body 字样,就是本文要处理的问题。
另外要区分:如果后端是 PHP,还需要同步调整 php.ini 中的 upload_max_filesizepost_max_size,否则 Nginx 放行后仍会被 PHP 拦截。

修改 client_max_body_size 的两种位置

client_max_body_size 可以放在 httpserverlocation 块中,作用范围依次缩小。
建议优先在站点对应的 server 块中设置,避免影响其他站点。

方式一:修改站点配置文件

宝塔面板用户可在“网站”列表点击对应站点,进入“配置文件”直接编辑。
命令行用户按发行版路径操作:

# 宝塔面板路径
/www/server/panel/vhost/nginx/你的域名.conf

# 常见编译安装路径
/usr/local/nginx/conf/nginx.conf

# apt 安装路径
/etc/nginx/sites-available/default

server { } 内部加入一行,例如允许 50MB:

server {
    listen 80;
    server_name example.com;
    client_max_body_size 50m;
    # 其余配置保持不变
}

单位支持 kmg,不区分大小写,写 50m 比写 52428800 更直观。

方式二:在 location 中单独放宽

只想让某个上传接口放宽限制时,可以写在 location 块内:

location /upload/ {
    client_max_body_size 200m;
    proxy_pass http://127.0.0.1:8080;
}

这种方式粒度更细,适合上传接口与普通页面共用同一域名的场景。

重载配置并验证是否生效

修改完成后先检查语法,再重载,不要直接重启,避免中断现有连接:

nginx -t
nginx -s reload

宝塔面板可直接点击“重载配置”按钮。
验证方法有两种:

  • curl 模拟上传一个超过原限制的文件,观察返回码是否不再是 413。
  • 直接在业务页面上传一个略小于新限制的文件,确认成功。

如果仍然报 413,检查是否存在多层 Nginx 或前置代理。
例如 CDN、负载均衡、Docker 中的 Nginx 容器,每一层都可能独立限制请求体大小,需要逐层确认。

容易踩坑的几个细节

改错文件:服务器上可能存在多个 Nginx 配置文件,用 nginx -T 可以打印最终生效的完整配置,搜索 client_max_body_size 确认实际值。

忘记后端限制:Nginx 放行后,PHP 的 upload_max_filesizepost_max_size,Java 的 spring.servlet.multipart.max-file-size,Node 的 body 解析限制都需要同步调整。
任何一环没放开,上传依然失败。

限制设得过大:把 client_max_body_size 设为 0 表示不限制,但这会让服务器暴露在超大请求体攻击风险下。
建议按业务真实需求设置,例如 50m 或 100m,而不是直接关闭限制。

重载未生效:确认执行 nginx -s reload 的用户有权限,且没有报错。
可以用 ps aux | grep nginx 查看 master 进程是否接收了信号。

常见疑问

413 和 502 有什么区别? 413 是请求体超过 Nginx 限制被拒绝,502 通常是后端服务不可用或超时,两者排查方向不同。

修改后需要重启服务器吗? 不需要。nginx -s reload 是平滑重载,不会断开现有连接。

为什么设置了 50m 还是传不上去? 优先检查后端语言的上传限制和前置代理层,Nginx 只是其中一环。

控制上传文件大小的核心就是 client_max_body_size,改对位置、同步后端、逐层排查,413 报错基本都能解决。
建议改完后用实际文件测试一次,确认最终效果符合预期。

分享到:
上一篇
Nginx屏蔽User-Agent
下一篇
Nginx健康检查,负载均衡后端节点监控
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意