使用Nginx部署Laravel出现502 Bad Gateway错误的原因排查
Laravel部署Nginx出现502 Bad Gateway的可能原因
502 Bad Gateway本质是Nginx无法与后端的PHP处理服务(这里是Herd提供的PHP-FPM)建立有效连接,结合你的配置文件,可能的原因如下:
- Herd的PHP服务未运行:检查Herd是否正常启动,对应版本的PHP-FPM服务是否处于运行状态。只有服务运行时,
herd82.sock这个Unix套接字文件才会存在,若服务停了,Nginx自然连不上。 - 套接字文件路径错误:配置里的
sock路径是/Users/hassanali/Library/Application\ Support/Herd/herd82.sock,注意两点:一是转义的反斜杠是否必要(Nginx配置里如果路径有空格,用引号包裹或者正确转义,也可以直接尝试去掉反斜杠,用引号把整个路径括起来,比如unix:"/Users/hassanali/Library/Application Support/Herd/herd82.sock");二是确认Herd生成的sock文件名是不是herd82,如果Herd升级过版本,文件名可能变化,比如变成herd83.sock,可以去对应目录下实际查看。 - Nginx无套接字文件访问权限:
herd82.sock文件的所有者和组可能是你的用户(hassanali)或者Herd相关进程用户,而Nginx默认运行用户是nobody(你的配置里#user nobody;是注释状态,可能继承了默认设置),导致Nginx没有读写这个sock文件的权限。可以用ls -l /Users/hassanali/Library/Application\ Support/Herd/herd82.sock查看权限,必要时调整文件权限或者修改Nginx运行用户为你的用户(把配置里的#user nobody;改成user hassanali;,然后重启Nginx)。 - FastCGI参数配置缺失:虽然你配置了
SCRIPT_FILENAME,但可以检查是否遗漏了关键参数,比如添加fastcgi_param PATH_INFO $fastcgi_path_info;,部分PHP应用需要这个参数来正确解析请求路径。另外,确保fastcgi_params文件里包含了必要的环境变量,比如REQUEST_METHOD、QUERY_STRING等。 - Laravel目录权限异常(间接影响):虽然502主要是连接问题,但如果Laravel的
storage、bootstrap/cache目录没有给PHP进程读写权限,可能导致PHP服务启动失败或报错,进而让Nginx无法获取正常响应。可以执行以下命令修复权限:chmod -R 755 storage bootstrap/cache chown -R hassanali:www-data storage bootstrap/cache # 根据实际用户组调整
内容的提问来源于stack exchange,提问作者Hassan
相关产品推荐
相关产品推荐

