502错误大概率是Unix socket权限不匹配:Nginx worker用户(如www-data)无权读写/var/run/php/php8.1-fpm.sock,需确保socket属主属组与Nginx worker用户一致且权限为0660。

502 错误出现在 Nginx 用 proxy_pass unix:/run/php/php8.1-fpm.sock 转发时,大概率是权限不匹配——Nginx worker 进程用户(如 www-data)无法读写该 socket 文件。
确认 Nginx worker 运行用户
执行以下命令查实际用户:
-
ps -o user= -p $(cat /run/nginx.pid)—— 查主进程用户 -
ps -o user= -C nginx | head -n1—— 查 worker 进程用户(更准确)
常见为 www-data(Debian/Ubuntu)或 nginx(CentOS/RHEL),必须和 socket 所属用户一致。
检查 socket 文件的归属与权限
运行:
ls -l /run/php/php8.1-fpm.sock
正确状态应类似:
srw-rw---- 1 www-data www-data ……
关键点:类型为 s(socket)、属主属组匹配、权限含 rw(至少对属组可读写)。
若显示 root:root 或权限为 600,Nginx 就会因无权访问而报 502。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
验证 Nginx 是否真能访问该 socket
切换到 Nginx worker 用户,手动测试连接:
-
sudo -u www-data stat /run/php/php8.1-fpm.sock—— 检查能否读取元信息 -
sudo -u www-data php -r 'echo file_get_contents("unix:///run/php/php8.1-fpm.sock");'—— 粗略模拟通信(可能报错但能判断连通性)
若提示 Permission denied 或 No such file or directory,说明权限或路径已出问题。
修复权限的常用做法
修改 PHP-FPM 配置,让其生成 socket 时自动适配 Nginx 用户:
- 编辑
/etc/php/8.1/fpm/pool.d/www.conf - 确保以下三项设置匹配:
listen.group = www-data
listen.mode = 0660
改完后重启服务:sudo systemctl restart php8.1-fpm,再检查 socket 权限是否已更新。

















