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

Docker Compose部署问题:无法访问WordPress站点

问题排查与修复:Nginx无法连接WordPress容器

问题描述

搭建MariaDB、WordPress、Nginx关联容器时,MariaDB运行正常,WordPress数据可写入数据库,但Nginx容器启动后,通过http://localhost或域名ataboada.42.fr无法访问WordPress,无报错但连接失败。

核心问题与修复方案

1. Nginx容器未将端口映射到主机

Docker Compose中Nginx服务未配置端口映射,导致主机无法访问容器内的443端口。

修复:
在nginx服务块中添加端口映射配置:

services:
  # ...其他服务配置...
  nginx:
    container_name: nginx
    build: ./nginx
    restart: on-failure
    networks:
      - inception
    depends_on:
      - wordpress
    ports:
      - "80:80"   # 可选,用于HTTP跳转HTTPS
      - "443:443" # 必须,将容器443端口映射到主机

2. WordPress容器运行的是PHP-FPM而非Web服务器

Nginx配置中代理目标为http://wordpress:9000,但9000是PHP-FPM的端口,并非HTTP服务端口。若WordPress镜像仅安装了PHP-FPM,Nginx无法通过HTTP协议直接连接。

两种修复方式:

  • 方式一:给WordPress容器添加Web服务器
    在WordPress的Dockerfile中安装Apache及PHP模块,让容器对外提供80端口的HTTP服务,再修改Nginx的proxy_pass为http://wordpress:80。

  • 方式二:Nginx直接处理PHP文件(需共享代码卷)
    修改Nginx配置,直接解析WordPress的PHP文件,配置PHP-FPM的fastcgi转发:

location / {
    root /var/www/html;
    index index.php index.html;
    try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
    root /var/www/html;
    fastcgi_pass wordpress:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

同时在Docker Compose的Nginx服务中添加WordPress数据卷挂载:

nginx:
    # ...其他配置...
    volumes:
      - wordpress_data:/var/www/html

3. 域名解析失败

配置中使用ataboada.42.fr作为server_name,但本地主机无法解析该域名。

修复:
在本地/etc/hosts文件中添加解析规则:

127.0.0.1   ataboada.42.fr

4. 自签名SSL证书被浏览器拦截

使用自签名SSL证书时,浏览器会默认阻止连接,导致显示"无法连接"。

临时测试方案:
在Nginx配置中添加80端口的server块,先通过HTTP访问验证:

server {
    listen 80;
    listen [::]:80;
    server_name ataboada.42.fr;

    # 可选:自动跳转至HTTPS
    return 301 https://$host$request_uri;
    # 或直接代理到WordPress:
    # location / {
    #     proxy_pass http://wordpress:80;
    #     proxy_set_header Host $host;
    # }
}

测试通过后,再将自签名证书导入浏览器以信任该证书。

验证步骤

  1. 重启所有容器:docker-compose down && docker-compose up -d
  2. 检查容器状态:docker-compose ps,确认所有容器处于Up状态
  3. 测试连通性:curl -k https://ataboada.42.fr(-k参数用于忽略SSL证书验证)

内容的提问来源于stack exchange,提问作者nobody really

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:56:04