如何解决 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仍会尝试)
相关推荐
Joren的学习记录2 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
..Move...5 小时前
基于Containerd搭建 K8s
运维·nginx·云原生
古城小栈7 小时前
有了Nginx还需要网关吗?
运维·nginx
zeijiershuai7 小时前
Vue-打包部署(Nginx)
前端·vue.js·nginx
huaweichenai10 小时前
了解nginx
linux·服务器·nginx
被闲置的鱼11 小时前
麒麟OS各种环境安装脚本,达梦数据库DM8、JDK安装、Nginx安装、vsftpd安装、硬盘挂载一件安装脚本
java·linux·数据库·nginx·kylin
友莘居士12 小时前
HTTP正向代理 vs TCP反向代理:概念与使用场景详解
运维·服务器·nginx·反向代理
元气满满-樱1 天前
rewrite常用全局变量
nginx·web
Full Stack Developme1 天前
Nginx 代理 mysql redis MQ 等各种软件,供客户端访问链接
redis·mysql·nginx