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容器执行网络连通测试:
如果telnet连接被拒绝,说明wordpress容器内的PHP-FPM未正常启动,优先排查上一步的数据库连接问题。# 进入web容器 docker-compose exec web bash # 测试能否解析wordpress服务地址 ping wordpress # 测试9000端口是否开放 apt update && apt install -y telnet telnet wordpress 9000 - 验证文件挂载是否正常
进入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
相关产品推荐
相关产品推荐

