Appearance
概述
当上传大尺寸高清图片、商品短视频、PDF 合同附件或大文件时,若提示 413 Request Entity Too Large 或 上传文件超出大小限制,需要对 Nginx、PHP、Swoole 及系统配置 进行多层级协同调优。
四层限制协同修改步骤
Nginx 客户端请求体限制(client_max_body_size)
Nginx 默认限制单次请求体最大为 1MB~2MB。
- 打开 Nginx 主配置
nginx.conf或当前站点的 Nginx 配置文件。 - 在
http { ... }或server { ... }块内加入或调大:nginxclient_max_body_size 50m; - 执行重载:
nginx -t && nginx -s reload。
PHP 上传限制(php.ini)
- 打开 PHP 8.0 的
php.ini配置文件。 - 调大以下两个参数(必须
post_max_size>=upload_max_filesize):iniupload_max_filesize = 50M post_max_size = 50M - 重启 PHP-FPM 服务。
Swoole 协议单包大小限制(config/swoole.php)
Swoole 作为常驻内存 HTTP 服务器,对接收的数据包大小有缓冲区限制:
- 打开项目根目录下的
config/swoole.php。 - 在
server.options中确认或调大package_max_length:php'options' => [ 'package_max_length' => 50 * 1024 * 1024, // 50MB // ... ],
业务上传配置(config/upload.php)
- 打开项目根目录下的
config/upload.php。 - 确认单文件最大允许大小
filesize(单位为字节):php'filesize' => 50 * 1024 * 1024, // 50MB
重启 Swoole 守护进程生效
修改完成后,必须重启常驻的 Swoole 进程:
bash
supervisorctl restart ebaozu_v4重启后即可支持大文件与长视频的顺畅上传。