Nginx仅上传特定格式文件出现413 Entity too large错误问题问询
问题排查及解决方案
你猜测的Nginx无法识别部分后缀文件体积的说法不成立,Nginx的请求体大小校验基于实际请求内容长度,和文件后缀无直接关联,出现该问题的核心原因是不同后缀的上传请求命中了不同的配置规则,或存在前置服务的单独限制,可按以下顺序排查:
- 优先检查Nginx子配置的参数覆盖
你当前仅在http全局块配置了client_max_body_size 100M,但Nginx配置的优先级为location块 > server块 > http块,你引入的/etc/nginx/conf.d/*.conf、/etc/nginx/sites-available/*.conf子配置中,大概率存在针对.mp3后缀或audio/*类型资源的单独location匹配规则,该规则内配置的client_max_body_size值小于你上传的文件大小(常见为1M)。上传图片时命中的是其他location规则,沿用了全局100M的配置,因此没有触发限制。
你可以执行以下命令全局搜索所有Nginx配置中的client_max_body_size参数,确认是否存在更小的局部配置:grep -r "client_max_body_size" /etc/nginx/ - 检查前置代理/网关的单独限制
如果你的站点前部署了CDN、WAF或其他反向代理服务,部分服务会针对不同文件后缀设置独立的上传大小阈值,音频后缀可能被单独限制为更小的数值,该限制会早于你的Nginx服务触发,返回413错误。 - 查看Nginx错误日志定位根因
Nginx错误日志会明确记录413错误的触发原因和对应的配置行,直接查看/var/log/nginx/error.log文件即可快速定位具体触发限制的配置位置。 - 补充校验php.ini的
post_max_size参数
你贴出的php.ini配置没有包含post_max_size参数,该参数限制了POST请求的整体最大大小,优先级高于upload_max_filesize,如果该值设置过小也可能触发上传失败,但该场景下通常返回的不是Nginx原生的413错误,可作为次要排查项。
内容的提问来源于stack exchange,提问作者sfarzoso
相关产品推荐
相关产品推荐

