问题描述
在 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 -
最后修改:2026年6月28日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://blog.ingomg.com/wordpress-413-fix/
共有 0 条评论