推荐在server块中配置client_max_body_size,因其优先级高于http块,可精准控制单域名所有请求(如upload.example.com),避免全局放宽带来的安全风险,且需同步调大后端限制并重载配置。

直接在对应 server 块里加 client_max_body_size 就行,比如:
server {
listen 80;
server_name upload.example.com;
client_max_body_size 500m;
location / {
root /var/www/upload;
index index.html;
}
}
这个设置只影响 upload.example.com 这个域名下的所有请求,其他站点不受干扰。
为什么推荐在 server 块里设
- 它会覆盖
http块里的全局默认值(通常是 1m),优先级更高 - 多个域名共用一台服务器时,不同业务上传需求差异大:博客可能只需 10m,视频后台却要 2g
- 不用改全局配置,避免误放开其他站点的限制
注意几个关键点
- 单位不敏感,
500m、500M、0.5g都可以,0表示禁用检查(慎用) - 该值控制的是整个请求体大小,不只是文件本身,还包括表单字段等
- 必须配合后端限制一起调大,比如 PHP 的
post_max_size和upload_max_filesize - 修改后要执行
nginx -t检查语法,再nginx -s reload生效
如果只想放宽某条路径
比如 /api/upload 接口允许传 2g,其他接口保持 50m,那就写在 location 里:
location /api/upload {
client_max_body_size 2g;
proxy_pass http://backend;
}
这样更精细,也更安全。











