Docker环境下Symfony API Platform cURL请求返回502 Bad Gateway问题求助
502 Bad Gateway 问题排查方案
以下是按优先级排序的排查方向:
1. 确认PHP容器运行状态
- 先查看容器是否正常启动:执行命令
docker ps | grep app1,如果容器未处于Up状态,直接查看容器启动日志定位问题:docker logs app1 - 常见启动失败原因:你的Dockerfile中仅复制了composer.json/composer.lock,未执行
composer install安装依赖,导致Laravel框架初始化失败,进而导致PHP-FPM启动异常
2. 验证PHP-FPM端口监听配置
默认PHP-FPM镜像可能配置为监听Unix套接字而非TCP 9000端口,会导致Nginx无法转发请求:
- 进入PHP容器检查端口监听:
docker exec -it app1 ss -tunlp | grep 9000 - 如果无输出,需要修改php-fpm的
www.conf配置,将listen参数修改为0.0.0.0:9000,重启容器后重试
3. 确认Nginx与PHP容器网络连通性
- 进入Nginx容器测试连通性:
docker exec -it webserver1 ping app1,如果无法连通,检查两个容器是否均加入app-network网络,可在docker-compose的webserver1配置中添加depends_on: [app1]保证PHP容器先启动 - 测试端口连通性:
docker exec -it webserver1 nc -zv app1 9000,如果端口不通,参考上一步检查PHP-FPM监听配置
4. 检查应用层配置异常
即使PHP-FPM正常运行,应用初始化失败也可能返回502错误:
- 确认项目根目录下存在
.env配置文件,数据库配置参数正确:DB_HOST=db1、DB_PORT=3306、DB_DATABASE=rest_api、DB_USERNAME=root、DB_PASSWORD=password - 检查目录权限:本地挂载的卷可能覆盖容器内的权限配置,执行
docker exec -it app1 chmod -R 775 storage bootstrap/cache修正权限 - 确认已执行Laravel初始化命令:
php artisan key:generate、php artisan migrate
5. 查看日志定位具体问题
- Nginx错误日志:执行
docker logs webserver1,或进入容器查看/var/log/nginx/error.log,可直接明确是连接PHP失败还是应用返回异常 - PHP错误日志:进入app1容器查看
/var/log/php7.4-fpm.log - Laravel应用日志:查看项目目录下
storage/logs/laravel.log定位应用层面报错
内容的提问来源于stack exchange,提问作者cookie
相关产品推荐
相关产品推荐

