Nginx 的 client_max_body_size 默认值是多少?

默认 1MB。超出即返回 413 Request Entity Too Large。修改可放 http/server/location 三层,内层覆盖外层;改完 reload 生效。本文含检查命令与配套注意事项。

最佳实践
Nginx 的 client_max_body_size 默认值是多少?封面

答案:1MB(1m)。请求体(文件上传、POST 数据)超过这个值,Nginx 直接返回 413 Request Entity Too Large。表单上传稍大的附件就失败,多半是没调过这个值。

检查当前生效值

grep -r client_max_body_size /etc/nginx/nginx.conf /etc/nginx/conf.d/ /etc/nginx/sites-enabled/

没搜到任何配置 = 用的就是默认 1MB。

修改方法

http {
    client_max_body_size 50m;    # 全局

    server {
        client_max_body_size 100m;   # 该站点覆盖全局

        location /upload {
            client_max_body_size 500m;   # 该路径再覆盖
        }
    }
}

三层上下文都合法,内层覆盖外层。改完:

sudo nginx -t && sudo systemctl reload nginx

设为 0 表示不限制(公网慎用)。

别忘配套调整

  1. 应用层限制:PHP 的 upload_max_filesize/post_max_size、Node 框架的 body limit,任何一环比它小照样失败
  2. 前置链路:CDN/云负载均衡/APIGW 各自有体积上限(如 Cloudflare 免费版 100MB)
  3. 超时联动:大文件上传慢,proxy_read_timeout/fastcgi_read_timeout 也要放宽,否则体积过了时间关不过

观测云对照

413 错误纳入监控。 Nginx 日志经 DataKit 采集并解析状态码后,413 出现频次可在观测云直接查询;对上传接口的 413 比例告警,能在用户反馈前发现配置问题。

常见问题(FAQ)

Q:为什么有的接口 1MB 默认够用也建议显式写?
A:显式声明是自文档化——后人不用猜默认值,也不会因 Nginx 版本/发行版预设差异踩坑。

Q:client_max_body_size 影响 GET 请求吗?
A:不影响。它限制的是请求,GET 一般没有 body。

Q:超大文件(几个 G)上传怎么设计?
A:别把限制无脑调大——用分片上传/断点续传,或对象存储预签名 URL 直传,绕开 Web 服务器。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台