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

Docker下Nginx部署WordPress4.7+PHP7出现502 Bad Gateway问题求助

问题排查步骤及常见原因

  • 服务启动顺序与兼容性问题
    你当前mysql服务使用latest标签,对应最新的MySQL 8.0+版本,WordPress 4.7搭载的PHP7.0不支持MySQL 8.0默认的caching_sha2_password身份认证插件,会导致WordPress无法连接数据库,PHP-FPM进程无法正常启动监听9000端口,Nginx转发请求时就会返回502错误。
    同时compose默认不会等待依赖服务完全就绪再启动后续服务,mysql未初始化完成时wordpress就启动,也会启动失败。
    修复方法:修改docker-compose.yml中mysql的镜像为mysql:5.7,并为服务添加依赖和自动重启配置:
    services:
      web:
        # 原有配置不变,新增以下内容
        depends_on:
          - wordpress
        restart: always
      wordpress:
        # 原有配置不变,新增以下内容
        depends_on:
          - mysql
        restart: always
      mysql:
        image: mysql:5.7
        # 原有配置不变,新增以下内容
        restart: always
    
  • 验证服务运行状态
    执行docker-compose ps查看所有服务的状态是否为Up,如果wordpress或mysql服务是Exit状态,执行docker-compose logs wordpress、docker-compose logs mysql查看具体报错信息。
  • 验证Nginx与PHP-FPM的连通性
    进入nginx容器执行网络连通测试:
    # 进入web容器
    docker-compose exec web bash
    # 测试能否解析wordpress服务地址
    ping wordpress
    # 测试9000端口是否开放
    apt update && apt install -y telnet
    telnet wordpress 9000
    
    如果telnet连接被拒绝,说明wordpress容器内的PHP-FPM未正常启动,优先排查上一步的数据库连接问题。
  • 验证文件挂载是否正常
    进入nginx容器查看/var/www/html目录下是否存在WordPress的项目文件,如果目录为空,说明volumes_from挂载失败,可以删除本地残留的匿名卷后重新启动服务:
    docker-compose down -v
    docker-compose up -d
    
  • 查看Nginx错误日志定位具体原因
    执行以下命令查看Nginx的错误日志,可以直接定位是连接被拒绝还是文件不存在等具体问题:
    docker-compose exec web cat /var/log/nginx/error.log
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:05