站点全部返回 502,检查发现 PHP 进程确实在运行,重启两边服务之后短暂恢复又复发。

真正麻烦的地方在于,几个原因的现象几乎一样。代理配置里写的是网络地址,进程监听的是本地套接字。还有一种是套接字文件路径和权限不匹配。

还有一种情况,两边的配置被不同来源覆盖,重启顺序影响结果。

动手时先确认进程实际监听方式

ss -lx | grep php && ss -lntp | grep php

随后核对代理转发目标

nginx -T | grep -n fastcgi_pass

再往下统一成同一种监听方式

grep -n '^listen' /etc/php-fpm.d/www.conf

剩下的就是重载两侧并验证

systemctl reload php-fpm nginx && curl -I http://127.0.0.1

改之前先确认了最近有没有人动过配置,避免白查一遍。

这次没动代码,只在配置和运行环境上找原因。

改完先别撤,确认这几项。站点返回正常,错误日志不再出现连接上游失败。

提醒一点。套接字方式性能更好但要确保权限一致;容器化之后路径变化很常见,改完要两边一起重启验证。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189