Docker Compose搭配Nginx始终显示欢迎页,无法加载WordPress
Docker Compose + Nginx 无法加载WordPress index.php 排查修复方案
核心问题定位与修复步骤
1. 端口映射与Nginx监听端口不匹配
你的Docker Compose配置中,Nginx容器的端口映射是8080:80(宿主机8080 → 容器内部80),但自定义default.conf里Nginx监听的是容器内部的8080和8443端口——这直接导致容器对外暴露的80端口上,Nginx并未监听,自然会加载Nginx默认的欢迎页(默认配置监听容器80端口)。
两种修复方式二选一:
- 修改
default.conf的监听端口为容器内部的80/443:
server { listen 80; listen [::]:80; server_name localhost; root /var/www/html; index index.php; # 其余location配置保持不变 } server { listen 443 ssl; listen [::]:443 ssl; server_name localhost; root /var/www/html; index index.php; # 需补充SSL证书配置才能正常启用443端口 # ssl_certificate /path/to/your/cert.pem; # ssl_certificate_key /path/to/your/key.pem; # 其余location配置保持不变 }
- 或者修改Docker Compose的端口映射,将宿主机端口转发到容器内部的监听端口:
ports: - 8080:8080 - 8443:8443
2. 清理Nginx冲突配置
Nginx会加载/etc/nginx/conf.d/下所有.conf后缀的文件,若容器内存在默认配置残留,可能覆盖你的自定义规则。
操作步骤:
- 进入容器检查配置文件列表:
docker exec -it nginx ls /etc/nginx/conf.d/
- 若存在多余配置文件(如
default.conf.bak),直接删除;也可以修改Dockerfile,在添加自定义配置前先清理默认文件:
FROM nginx:stable-alpine # 先删除默认配置 RUN rm /etc/nginx/conf.d/default.conf # 再添加自定义配置 ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf RUN mkdir -p /var/www/html
3. 修复WordPress目录权限
容器内/var/www/html的权限可能导致Nginx无法读取WordPress文件,检查并修改权限:
- 进入容器查看目录权限:
docker exec -it nginx ls -l /var/www/html/
- 若文件所有者为root,修改为Nginx运行用户(Alpine镜像默认是
nginx):
在Dockerfile中添加:
RUN chown -R nginx:nginx /var/www/html
4. 验证PHP后端连通性
端口问题解决后,若仍无法加载PHP,需确认Nginx能连接到PHP容器的9000端口:
docker exec -it nginx nc -zv php 9000
若连接失败,检查PHP容器是否正常启动、是否监听9000端口,且与Nginx处于同一个wordpress网络中。
内容的提问来源于stack exchange,提问作者Thibault Abry
相关产品推荐
相关产品推荐

