站点全部返回 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
改之前先确认了最近有没有人动过配置,避免白查一遍。
这次没动代码,只在配置和运行环境上找原因。
改完先别撤,确认这几项。站点返回正常,错误日志不再出现连接上游失败。
提醒一点。套接字方式性能更好但要确保权限一致;容器化之后路径变化很常见,改完要两边一起重启验证。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。