You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx proxy_pass返回404错误:Docker-Compose WordPress网关问题排查

排查Nginx网关转发WordPress容器出现404的问题

我来帮你一步步拆解这个问题——用Docker Compose搭Nginx+WordPress的集群,子路径访问404是挺常见的坑,咱们从容器状态到配置逐一排查:

第一步:先确认WordPress容器本身是否正常运行

首先得排除容器根本没跑起来或者频繁重启的情况:

  • 执行 docker-compose ps banburritos,看看状态是不是Up,有没有Restarting的标记。如果是重启状态,直接看容器日志找原因:docker-compose logs banburritos,大概率是数据库连接失败(比如环境变量配错了)。
  • 如果容器是Up状态,进到容器内部测一下自身的可用性:docker exec -it banburritos curl -i http://localhost。如果这里也返回404,那问题就出在WordPress本身——可能是安装没完成、挂载的卷丢失了核心文件,或者wp-config.php里的站点路径配置错了。

第二步:检查Nginx的转发配置是否正确

这是子路径访问404最常见的原因,重点看location /banburritos/的proxy_pass配置:

  • 你得确保Nginx配置里的转发路径末尾带斜杠!举个正确的配置示例:
location /banburritos/ {
    proxy_pass http://banburritos/;  # 这里的末尾斜杠必须加!
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

如果proxy_pass没加末尾的斜杠(比如写成proxy_pass http://banburritos;),Nginx会把/banburritos/xxx完整转发给WordPress容器,而WordPress默认监听根路径,自然会返回404。

第三步:修正WordPress的站点路径配置

就算Nginx转发对了,WordPress自身的站点URL没配好也会出问题:

  • 进入WordPress容器,用wp-cli快速修改配置(如果没装wp-cli,直接编辑wp-config.php也行):
docker exec -it banburritos wp config set WP_HOME 'http://localhost/banburritos'
docker exec -it banburritos wp config set WP_SITEURL 'http://localhost/banburritos'

或者直接在wp-config.php里添加这两行:

define('WP_HOME','http://localhost/banburritos');
define('WP_SITEURL','http://localhost/banburritos');

WordPress会根据这两个参数生成页面链接和资源路径,不配的话,访问子路径时会跳转到根路径,导致404。

第四步:验证数据库连接是否正常

最后再确认一下数据库的环境变量是否匹配:

  • 对比mysql.env和wordpress.env:
    • mysql.env里的MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD要和wordpress.env里的WORDPRESS_DB_NAME、WORDPRESS_DB_USER、WORDPRESS_DB_PASSWORD完全一致。
    • WORDPRESS_DB_HOST必须是Docker Compose里mysql服务的名字(比如你的mysql服务叫db,那就是db:3306),不能写localhost,不然WordPress容器会连自己的3306端口,自然连不上数据库。

最后再做一次测试

从Nginx容器内部直接访问WordPress容器:docker exec -it <你的Nginx容器名> curl -i http://banburritos。如果这里能返回正常的WordPress页面,那说明容器网络没问题,调整Nginx配置和WordPress站点URL就能解决;如果这里也404,那继续盯着WordPress容器日志和wp-config.php找问题。

内容的提问来源于stack exchange,提问作者Louis Thibault

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:09:22