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

Debian12下Nginx代理Laravel出现502 Bad Gateway故障排查求助

解决Laravel部署后Nginx 502 Bad Gateway及目录索引禁止问题

核心问题分析

从错误日志和配置能定位两个关键矛盾点:

  1. Nginx实际访问的是/var/www/html/laravel/current/根目录,而非你配置的/public子目录——说明你写的站点配置未生效,Nginx用了默认配置
  2. 请求端口为8000,但站点配置监听的是80端口,同时你启动了php artisan serve(默认监听8000)——开发服务和生产服务冲突,导致路由混乱

分步解决方案

1. 确保站点配置正确启用

  • 先修改nginx.conf,删除include /etc/nginx/sites-available/*;这一行——sites-available存放的是未启用的配置,仅需加载sites-enabled里的软链接文件
  • 为你的站点配置创建软链接到启用目录:
    sudo ln -s /etc/nginx/sites-available/filename.conf /etc/nginx/sites-enabled/
    
  • 验证Nginx配置语法:
    sudo nginx -t
    
  • 重启Nginx使配置生效:
    sudo systemctl restart nginx
    

2. 停止开发服务,改用Nginx+PHP-FPM运行

php artisan serve仅适合本地开发,生产环境必须用Nginx+PHP-FPM组合,两者同时运行会导致端口冲突:

# 终止所有artisan serve进程
sudo pkill -f "php artisan serve"

3. 验证PHP-FPM状态与配置匹配

  • 检查PHP-FPM是否正常运行:
    sudo systemctl status php8.1-fpm
    
    未运行则启动:
    sudo systemctl start php8.1-fpm
    
  • 确认站点配置里的fastcgi_pass指向的socket文件存在:
    ls -l /var/run/php/php8.1-fpm.sock
    
    如果不存在,打开/etc/php/8.1/fpm/pool.d/www.conf,检查listen参数是否为/var/run/php/php8.1-fpm.sock,修改后重启PHP-FPM:
    sudo systemctl restart php8.1-fpm
    

4. 修复Laravel目录权限

确保Nginx进程能读取和写入必要文件:

# 设置目录所有者为Nginx运行用户www-data
sudo chown -R www-data:www-data /var/www/html/laravel/current
# 设置基础文件权限
sudo chmod -R 755 /var/www/html/laravel/current
# 给存储和缓存目录写入权限
sudo chmod -R 775 /var/www/html/laravel/current/storage /var/www/html/laravel/current/bootstrap/cache

5. 测试访问

直接访问服务器的80端口(无需加:8000),若配置正确,Laravel应用应正常加载。

额外检查项

  • 确认服务器防火墙允许80端口入站:
    sudo ufw allow 80/tcp
    
  • 清除Laravel缓存避免配置残留:
    cd /var/www/html/laravel/current
    php artisan config:clear
    php artisan cache:clear
    php artisan view:clear
    

内容的提问来源于stack exchange,提问作者Geert Van Der Weide

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:26:14