问题现象

在后台直接上传插件包,进度条走到一半弹出 413,换小一点的包又能成功。

原因分析

请求体超过 Nginx 或 PHP 的限制,两个位置任一没放开都会在网关层被拦。判断时先分清是 插件上传 413 本身的配置问题,还是上游调用、运行环境带进来的差异;前者改配置就能收口,后者要沿着请求链路一层层往上找,处理顺序不能颠倒。先在出问题的机器上复现一次,把报错原文和发生时间记下来,再对着日志定位。

处理步骤

  1. 先调 Nginx 的请求体上限
  2. 再同步 PHP 的上传与表单上限
  3. 最后确认面板配置没有覆盖

对应的命令或配置片段如下,可直接复制:

client_max_body_size 64m;
# php.ini
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

排查时把每一步的输出留下来,后面再遇到同类问题,对照日志就能判断是哪一层先出错的。改动前把原配置备份一份,出问题时能马上回退,比现场找原因省时间。

验证结果

插件包能完整上传并进入安装界面,不再出现 413。

作者 9823189