如何解决 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仍会尝试)
相关推荐
catoop26 分钟前
生产环境 nginx 推荐配置
运维·nginx
终端行者5 小时前
Nginx端到端反向代理https配置
运维·nginx·https
岁岁种桃花儿5 小时前
Nginx高并发网站技术的实战篇
运维·nginx
加油vekiki7 小时前
nginx+keepalived搭建主备nginx
nginx
MACKEI9 小时前
Nginx 静态图片访问故障快速排查手册
nginx
无敌糖果9 小时前
使用Nginx二级代理Jumpserver堡垒机
运维·nginx
peihexian9 小时前
ingress-nginx更换为f5 nginx gateway fabric
nginx·gateway·fabric
Joy T18 小时前
【AI运维】02 云上基础部署:ECS、OSS 与 Nginx 的体系化理解与实践
运维·nginx
Dreamboat-L18 小时前
云服务器上部署nginx
java·服务器·nginx
季__末21 小时前
WSL2安装配置
nginx