应优先查看/www/wwwlogs/你的域名.error.log中connect() failed (111: connection refused)或upstream timed out等错误,再同步检查php-fpm状态、监听地址一致性及后端服务是否真实listen。

要追踪 Nginx 后端服务连接中断问题,核心是盯住错误日志中与 upstream、connection refused、timeout 相关的报错行,并结合日志路径、级别和上下文交叉验证。
先确认日志位置和类型
宝塔面板用户默认日志路径不是 /var/log/nginx/,而是:
- 全局错误日志:/www/wwwlogs/nginx_error.log —— 查 Nginx 自身启动失败、配置加载异常、SSL 初始化错误等
- 站点专属错误日志:/www/wwwlogs/你的域名.error.log —— 查该站点反向代理时与后端(如 PHP-FPM、Tomcat、Node.js)连接中断的具体记录
若用的是标准编译安装或 Docker,路径可能是 /var/log/nginx/error.log 或容器内 /var/log/nginx/error.log;不确定时可执行 nginx -t 查配置文件,再用 grep error_log /etc/nginx/nginx.conf 定位真实路径。
重点识别连接中断类错误关键词
以下错误信息几乎都指向后端不可达,需立即检查上游服务状态:
-
connect() failed (111: Connection refused) while connecting to upstream→ 后端进程未运行,或监听地址/端口写错 -
upstream timed out (110: Connection timed out) while connecting to upstream→ 后端启动了但响应极慢,或防火墙拦截了连接 -
upstream prematurely closed connection while reading response header from upstream→ 后端处理中意外退出(如 PHP 脚本崩溃、内存超限被 kill) -
recv() failed (104: Connection reset by peer)→ 后端主动断开,常见于应用层强制关闭连接
提升日志细节辅助定位
默认 error 级别日志不记录 rewrite 规则匹配过程或 SSL 握手细节,遇到隐性中断(如重定向循环、证书链不全)时需临时调高日志级别:
- 编辑站点配置或主配置,在
http或server块中加入:error_log /www/wwwlogs/your-site.error.log debug; - 执行
nginx -t && nginx -s reload生效 - 复现问题后,查看日志中是否出现
http proxy connect、ssl handshake、rewrite等调试信息 - 排查完毕立即改回
error级别,避免磁盘被快速占满
联动检查后端服务状态
单看 Nginx 日志只能知道“连不上”,不能确定“为什么连不上”。必须同步验证后端:
- 用
curl -v http://127.0.0.1:8080/health(替换为实际后端地址)直连测试 - 查后端进程:如 PHP-FPM 运行状态用
systemctl status php-fpm,Docker 容器用docker ps | grep your-app - 看后端自身日志:PHP 错误日志通常在
/www/wwwlogs/域名.phpfpm.log或/var/log/php-fpm/www-error.log - 检查网络通路:用
telnet 127.0.0.1 9000或nc -zv 127.0.0.1 8080验证端口可达性











