Laravel+Docker部署遇Nginx 502 Bad Gateway问题求助
解决Docker部署Laravel时Nginx 502 Bad Gateway错误
以下是针对问题的排查与解决步骤:
1. 检查PHP容器运行状态与连通性
- 执行
docker-compose ps,确认php服务处于Up状态。若容器未启动,查看启动日志定位问题:docker-compose logs php - 进入Nginx容器测试与PHP服务的连通性:
若无法连接,确认Docker Compose默认网络是否正常(同一compose内的服务默认可通过服务名互通)。docker exec -it <你的nginx容器名称或ID> telnet php 9000
2. 修复Laravel目录权限
Laravel需要storage和bootstrap/cache目录具备可写权限,进入PHP容器执行:
chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache
3. 验证Nginx根目录与文件存在性
- 确认本地项目的
public目录存在且包含index.php文件 - 进入Nginx容器检查文件挂载是否正确:
若文件不存在,检查ls /var/www/html/publicdocker-compose.yml中server服务的./:/var/www/html挂载路径(确保执行docker-compose up的目录是Laravel项目根目录)。
4. 安装Laravel项目依赖
进入PHP容器执行Composer安装依赖:
composer install
依赖未安装会导致PHP执行报错,进而触发Nginx 502错误。
5. 确认PHP-FPM监听配置
进入PHP容器检查PHP-FPM监听端口是否为9000:
cat /usr/local/etc/php-fpm.d/www.conf | grep listen
官方php:8.1.0-fpm镜像默认监听9000端口,若配置为socket路径(如listen = /run/php/php-fpm.sock),需修改Nginx配置中的fastcgi_pass为对应socket路径。
内容的提问来源于stack exchange,提问作者Binod
相关产品推荐
相关产品推荐

