如何解决 413 Request Entity Too Large ?

Nginx配置

在nginx.conf 添加如下配置即可解决。

bash 复制代码
		sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 20M;
    client_header_buffer_size 16k;

    gzip_http_version 1.1;
    gzip_proxied expired no-cache no-store private auth;
    gzip_disable "MSIE [1-6] .";
    gzip_vary on;

    gzip on;
    gzip_min_length 1000;
    gzip_buffers 4 16k;
    gzip_comp_level 5;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

Nginx配置片段主要涉及文件传输优化、连接管理、请求体限制、请求头缓冲以及响应压缩五大核心功能。以下是逐项解析:

  1. 文件传输与连接管理
    sendfile on;
    启用高效文件传输模式(零拷贝技术),直接将文件从磁盘复制到Socket缓冲区,减少上下文切换和内存拷贝次数,显著提升静态文件(如图片、视频)的传输性能。
    keepalive_timeout 65;
    设置客户端连接保持活动状态的最长时间为65秒。长连接可减少重复TCP握手开销,但需平衡服务器资源占用(如并发连接数)。
  2. 请求体与头限制
    client_max_body_size 20M;
    限制客户端请求体(如上传文件、POST数据)的最大大小为20MB。若超过此值,服务器返回413 Request Entity Too Large错误(与您之前的提问直接相关)。
    client_header_buffer_size 16k;
    设置客户端请求头的缓冲区大小为16KB。用于处理包含较大头字段(如长URL、多Cookie)的请求,避免因缓冲区不足导致400错误。
  3. 响应压缩(Gzip)
    gzip on;
    全局启用Gzip压缩功能,减少响应体体积,提升页面加载速度。
    gzip_http_version 1.1;
    仅对HTTP/1.1及以上版本的请求启用压缩(HTTP/1.0默认不支持)。
    gzip_proxied expired no-cache no-store private auth;
    控制对代理请求的压缩行为:
    expired:已过期的缓存内容仍压缩
    no-cache/no-store:禁止缓存的内容仍压缩
    private:仅客户端缓存的内容仍压缩
    auth:需认证的内容仍压缩
    gzip_disable "MSIE 1-6 .";
    禁用对旧版IE浏览器(IE1-6)的压缩,因其可能无法正确处理压缩内容。
    gzip_vary on;
    添加Vary: Accept-Encoding响应头,告知缓存服务器和代理需根据客户端支持的压缩格式缓存不同版本,避免缓存污染。
    gzip_min_length 1000;
    仅对大于1000字节(1KB)的响应体启用压缩,避免小文件压缩开销超过收益。
    gzip_comp_level 5;
    设置压缩级别为5(1-9级,值越高压缩率越高但CPU消耗越大),平衡压缩效率与资源消耗。
    gzip_buffers 4 16k;
    分配4个16KB的缓冲区(共64KB)用于存储压缩后的数据,避免压缩过程中频繁申请内存。
    gzip_types ...;
    指定启用压缩的MIME类型列表,包括:
    文本类:text/plain、text/css、text/javascript、application/xml
    脚本类:application/x-javascript、application/x-httpd-php
    图片类:image/jpeg、image/gif、image/png(注:图片本身已压缩,二次压缩收益有限,但Nginx仍会尝试)
相关推荐
还是大剑师兰特1 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
xing-xing1 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
PC2005-cloud1 天前
Nginx 防盗链配置实战:用 referer 模块保护网站静态资源
nginx
PHP实战开发录1 天前
Nginx上传大文件为什么报413
nginx·php·开发
Lsetea2 天前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl
szephyr3 天前
HTTPS 证书申请与自动续期:acme.sh + Let‘s Encrypt 完整记录
nginx·https·acme.sh·证书续期
Lsetea3 天前
部署证书后提示“证书名称与输入不匹配”:Safari 报错的三层排查
nginx·https·safari·ssl证书·openssl
打工仔折腾 AI4 天前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
Linux运维技术栈4 天前
如何避免绕过CDN的攻击?基于 CDN 回源请求头鉴权的防御实操与安全性剖析
nginx·安全·cdn
Lsetea4 天前
OpenSSL快速生成域名证书:含SAN的自签命令、验证与排错
nginx·https·ssl证书·openssl·自签证书