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

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后缀的文件,若容器内存在默认配置残留,可能覆盖你的自定义规则。

操作步骤:

  1. 进入容器检查配置文件列表:
docker exec -it nginx ls /etc/nginx/conf.d/
  1. 若存在多余配置文件(如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文件,检查并修改权限:

  1. 进入容器查看目录权限:
docker exec -it nginx ls -l /var/www/html/
  1. 若文件所有者为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:55:21