如何解决 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仍会尝试)
相关推荐
Sayai19 小时前
Hadoop 集群安全加固实战:YARN 未授权访问漏洞修复,firewalld 白名单 + Nginx 反向代理 Basic Auth 全流程
运维·hadoop·nginx·安全·网络安全
光依旧2 天前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
Lvan的前端笔记3 天前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
姜鱼问生3 天前
Nginx 缓存命中率监控:从 X-Cache-Status 到实时统计
运维·nginx·缓存
Joy T4 天前
从 Nginx 到 Gateway 再到微服务:一次 AI 请求的完整链路
nginx·微服务·gateway·controller·路由转发·ai service·接口错误排查
小匠石钧知4 天前
07_在k8s集群中安装ingress-nginx
nginx·容器·kubernetes·ingress
百度一下吧4 天前
Nginx 使用手册:从安装配置到实战部署
运维·nginx
JAVA面经实录9175 天前
Java高级后端 · 全套面试通关手册(Nginx)
java·nginx·面试
lpfasd1237 天前
WinSW在Win7上失败真相-实测与修复
windows·nginx