Docker部署phpMyAdmin无法与Nginx连通,访问出现404错误
解决Nginx反向代理phpMyAdmin出现404的问题
问题根源
从phpMyAdmin日志可见,容器收到GET /phpmyadmin/ HTTP/1.0请求后返回404,核心原因如下:
- phpMyAdmin容器内的Apache默认将
/phpmyadmin作为站点根目录,Nginx直接转发/phpmyadmin/路径时,容器内无对应资源,触发404。 PMA_ABSOLUTE_URI配置错误,使用了本地端口路径而非实际访问的域名路径。- 更新后的phpMyAdmin配置中
PMA_PORT设为3307,但MySQL容器使用默认3306端口,会导致后续数据库连接失败。
修正步骤
1. 调整Nginx配置
修改location /phpmyadmin/块,确保转发路径匹配容器内的根目录结构,并添加必要代理头:
location /phpmyadmin/ { proxy_pass http://127.0.0.1:8081/; # 末尾添加斜杠,将请求转发到容器根目录 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
末尾的斜杠是关键:它会把
/phpmyadmin/xxx转换为容器内的/xxx,完全匹配phpMyAdmin的目录结构。
2. 修正phpMyAdmin的Docker配置
更新docker-compose.yaml中的phpmyadmin服务配置:
phpmyadmin: image: phpmyadmin/phpmyadmin:latest restart: always ports: - "8081:80" environment: PMA_HOST: db PMA_PORT: 3306 # 修正为MySQL容器的默认端口 PMA_ABSOLUTE_URI: https://mydomain/phpmyadmin/ # 改为实际访问的域名路径 MYSQL_USER: myuser MYSQL_PASSWORD: mypassword depends_on: - db
3. 重启服务
- 重启Nginx:
sudo systemctl restart nginx - 重启phpMyAdmin容器:
docker-compose up -d phpmyadmin
验证
访问https://mydomain/phpmyadmin/,应能正常进入登录界面。若仍有问题,可直接访问http://服务器IP:8081测试容器本身是否正常运行,排查是否为Nginx转发逻辑问题。
内容的提问来源于stack exchange,提问作者boyenec
相关产品推荐
相关产品推荐

