跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Nginx 文件上传大小限制及 client_max_body_size 最大值详解

介绍 Nginx 文件上传大小限制配置。默认限制为 1MiB,超限报 413 错误。可通过 client_max_body_size 指令在 http、server 或 location 块中设置,支持 k/m/g 单位。64 位系统上限约 8EiB,32 位系统约 2GiB。设为 0 可取消限制。配置完成后需执行 nginx -t 验证并 reload 生效。

佛系玩家发布于 2026/3/27更新于 2026/9/1087 浏览
Nginx 文件上传大小限制及 client_max_body_size 最大值详解

一、默认值与错误提示

  • 默认值:client_max_body_size 1m; Nginx 默认允许的请求体最大为 1 MiB,超过该值会返回 413 Request Entity Too Large 错误。

错误提示示例:

HTTP/1.1 413 Request Entity Too Large Content-Type: text/html 

二、如何配置 client_max_body_size

该指令可放置在 http、server 或 location 块中,后者会覆盖前者的配置:

http {
    # 全局设置,作用于所有 server
    client_max_body_size 50m;
    server {
        listen 80;
        server_name example.com;
        # 针对某个虚拟主机单独设置
        client_max_body_size 100m;
        location /upload {
            # 针对特定路径再度覆盖
            client_max_body_size 200m;
            proxy_pass http://backend;
        }
    }
}

说明:在嵌套块中声明的 client_max_body_size 会覆盖祖先块中的同名指令。 单位:支持 k、m、g(不区分大小写),如 10K、2m、1G。

三、client_max_body_size 的最大上限

Nginx 在内部将该值存储为 C 语言类型 off_t,其位宽决定了上限:

  1. 64 位可执行文件
    • off_t 为 64 位有符号整数,理论最大值为 2⁶³ − 1 字节(约 9.22×10¹⁸ 字节,≈ 8 EiB),故可将 client_max_body_size 设置至 2^63 而不报错。
  2. 32 位可执行文件(未启用大文件支持)
    • off_t 为 32 位有符号整数,其最大值约为 2³¹ − 1(约 2 GiB),即 2147483647 字节。若需突破此限制,可在编译时定义 _FILE_OFFSET_BITS=64 启用大文件支持,使 off_t 拓展至 64 位。

四、取消大小检查(无限制上传)

将 client_max_body_size 设置为 0,可禁用对请求体大小的检查,允许无限制上传或 POST 请求:

server {
    listen 80;
    server_name unlimited.example.com;
    # 取消大小限制
    client_max_body_size 0;
    location / {
        proxy_pass http://backend;
    }
}

说明:设置为 0 时,Nginx 不再在自身层面拦截任何大小的请求体。

五、实战示例

开启无限制上传

server {
    listen 80;
    server_name files.example.com;
    # 完全取消 Nginx 层面的大小限制
    client_max_body_size 0;
    location /files {
        proxy_pass http://backend_files;
    }
}

按需放宽单接口限制

server {
    listen 80;
    server_name upload.example.com;
    # 默认允许 10MiB
    client_max_body_size 10m;
    location /api/v1/upload {
        # 单接口放宽至 500MiB
        client_max_body_size 500m;
        proxy_pass http://backend_upload;
    }
}

六、配置验证

# 检查配置语法
nginx -t
# 重载 Nginx(应用新配置)
nginx -s reload

随后可使用 curl 或前端上传大文件,确认是否仍出现 413 错误,并查看 /var/log/nginx/error.log 以排查问题。

七、小结

  • 核心指令:client_max_body_size 决定 Nginx 层面的请求体大小上限。
  • 默认值:1 MiB(1m)。
  • 最大上限:由 off_t 位宽决定,64 位环境支持至 2⁶³ − 1 字节,32 位环境(未启用大文件支持)限约 2 GiB。
  • 取消限制:设置为 0 即可禁用检查,允许无限制上传。

通过上述配置与示例,您可以灵活地调整或取消 Nginx 的上传大小限制,满足从小型表单到超大文件传输的各种业务需求。

目录

  1. 一、默认值与错误提示
  2. 二、如何配置 clientmaxbody_size
  3. 三、clientmaxbody_size 的最大上限
  4. 四、取消大小检查(无限制上传)
  5. 五、实战示例
  6. 六、配置验证
  7. 检查配置语法
  8. 重载 Nginx(应用新配置)
  9. 七、小结

更多推荐文章

查看全部
  • HarmonyOS 应用升级:静默登录与端云一体实战
  • 前端函数防抖详解:原理、手写与 Lodash 实战
  • DeepSeek-R1 大模型基于 MS-Swift 框架部署推理微调指南
  • Python 数据分析通用全流程指南
  • Llama.cpp 跨平台部署本地大模型实战指南
  • Go2 机器人强化学习(RL)开发实操指南
  • C语言标准库与工具链:string.h、stdio.h、stdlib.h及CMake构建
  • OpenClaw 与 Claude Code、Cursor、Copilot 的差异解析
  • 构建私有化知识库:融合 ChatGPT 与向量数据库的技术实践
  • Fooocus 部署实践:本地手动配置与云端一键启用对比
  • getBoundingClientRect 方法完全指南
  • VR+ 具身智能 + 人形机器人:通往现实世界的智能接口
  • 如何成为卓越的 AIGC 产品经理:从传统产品到 AI 领域的转型指南
  • Python 基础语法详解
  • Arcade-plus 专业谱面制作入门与进阶指南
  • FPGA 实现任意角度图像旋转:原理与流水线设计
  • 利用统一 API 接口实现大模型选型与成本优化
  • Python Web 开发与爬虫方向如何选择
  • FMC 与 FMC+ 标准详解
  • ComfyUI 整合包安装与使用指南

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online