Nginx上传大文件为什么报413

最近处理一个 PHP 后台上传功能时遇到过这种情况:普通图片和小附件都能正常上传,但只要文件稍微大一点,页面就直接提示 413,PHP 接口甚至没有进入业务代码。刚开始一直在检查 upload_max_filesizepost_max_size,两个参数明明已经调得很大,问题却没有变化。

后来继续排查才发现,请求其实被 Nginx 提前拦截了。

Nginx 本身还有一个 client_max_body_size 参数,用来限制客户端请求体大小。如果这里设置得比 PHP 允许的上传大小更小,请求还没到 PHP-FPM,就已经被 Nginx 返回 413 Request Entity Too Large。这时候无论怎么改 PHP 配置都不会生效。

处理时先根据业务需要调整 Nginx 的上传限制,再检查 PHP 的 upload_max_filesizepost_max_size,保证几层配置之间不会互相冲突。修改后重新加载 Nginx,并通过 phpinfo() 或命令行确认 PHP 实际加载的配置文件,避免改错 php.ini

另外还给上传接口增加了前端文件大小校验。用户选择文件时就能知道是否超出限制,不需要等上传半天以后再看到报错。

现在排查文件上传问题,我一般会按照"浏览器、Nginx、PHP、程序代码"这个顺序逐层确认。很多上传失败并不是 PHP 代码有问题,而是请求根本没有机会进入 PHP。

#PHP开发 #Nginx #文件上传 #服务器运维

相关推荐
damoluomu11 小时前
国产企业级 PHP CMS:哪些能免费商用
php
郑州光合科技余经理14 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
MyFreeIT14 小时前
Android PHP Manual
php
Lsetea17 小时前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl
aixingpan19 小时前
aixingpan.cn API开发文档:api_docs_trichart_natal_progression_sec_transit2接口指南
前端·php
sbjdhjd1 天前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
daxiangxm1 天前
【趣味休息】“围住小猫在线玩”-“困住小猫”,又回来了
数据结构·人工智能·vscode·github·php
星光开发者1 天前
基于Spring Boot的充电桩管理系统的设计与实现-计算机毕设【课程设计】57105
vue.js·spring boot·vscode·mysql·django·php·express
szephyr2 天前
HTTPS 证书申请与自动续期:acme.sh + Let‘s Encrypt 完整记录
nginx·https·acme.sh·证书续期