WordPress 上传主题报 413 错误的排查与解决

少东家 2026-6-28 25 6/28

问题描述

在 WordPress 后台上传主题时,浏览器返回 413 Request Entity Too Large 错误。主题文件仅 4MB,并非大文件。

环境说明

  • 面板:1Panel
  • Web 服务器:OpenResty(Docker 部署)
  • WordPress:Docker 部署
  • 访问链路:主机 Nginx(80 端口)→ OpenResty(Docker 内部)→ WordPress 容器

排查过程

1. 检查 OpenResty 配置

进入 OpenResty 容器查看主配置:

client_max_body_size 50m;

50MB 的限制,4MB 的主题文件完全不会触发,排除。

2. 检查 PHP 配置

查看 WordPress 容器中的 PHP 上传限制:

upload_max_filesize = 32M
post_max_size = 32M

32MB 的限制,同样不会触发,排除。

3. 检查 WAF 防火墙

1Panel 自带的 WAF 规则中没有请求体大小限制,排除。

4. 检查主机 Nginx(关键)

发现主机上还有一层 Nginx 监听 80 端口,作为反向代理转发到 OpenResty。查看站点配置:

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://127.0.0.1:8081;
# 没有设置 client_max_body_size
}
}

根因:主机 Nginx 未设置 client_max_body_size,默认值为 1MB。4MB 的主题文件超过了这个限制,请求在主机 Nginx 层就被拒绝了,根本到不了 OpenResty 和 PHP。

解决方案

在主机 Nginx 站点配置中添加:

client_max_body_size 64M;

然后重载 Nginx:

nginx -t && nginx -s reload

总结

层级 配置项
主机 Nginx client_max_body_size 1MB(默认)
OpenResty client_max_body_size 50MB
PHP upload_max_filesize 32MB

请求经过的每一层代理都需要检查上传大小限制。当存在多层代理时,最小的那个限制决定了最终能否上传成功。

排查建议:从离用户最近的入口开始,逐层向后排查。

- THE END -

少东家

6月28日23:13

最后修改:2026年6月28日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论