Nginx 日志错误定位与修复实操
一、快速定位流程
二、常见错误与对应修复
| 日志关键词/现象 | 典型原因 | 快速修复 |
|---|---|---|
| connect() failed (111: Connection refused) while connecting to upstream | 上游未启动、端口不对、监听地址错误 | 确认上游服务运行(如 systemctl status php-fpm);检查端口监听(ss -ltnp |
| upstream timed out (110: Connection timed out) | 上游处理慢或卡死、超时阈值过低 | 提升超时:proxy_connect_timeout、proxy_read_timeout(如 60s);同时优化上游性能或扩容 |
| Permission denied / open() “/var/www/…” failed (13) | 文件/目录权限或属主错误,或安全模块限制 | 修正权限:chmod -R 755 /var/www/html;chown -R www-data:www-data /var/www/html;排查 SELinux/AppArmor |
| bind() to 0.0.0.0:80 failed (98: Address already in use) | 端口被占用或 IPv4/IPv6 重复监听 | 释放占用端口或调整 listen:listen 80; listen [::]:80 ipv6only=on; |
| rewrite or internal redirection cycle | rewrite 规则导致无限重定向 | 增加 break/last 或修正目标 location,避免循环 |
| “nginx: [alert] could not open error log file … (13: Permission denied)” | Nginx 用户对日志目录无写权限或目录不存在 | 创建目录并授权:mkdir -p /var/log/nginx && chown www-data:www-data /var/log/nginx;必要时用 sudo 执行 nginx -t/reload |
| worker process exited on signal 11 (core dumped) | 访问非法地址、第三方模块异常、内存问题 | 检查 location 匹配与错误页;用 gdb 分析 core;升级/禁用异常模块;检查内存与请求体大小配置 |
| 499 Client Closed Request | 客户端提前关闭连接(常见于慢接口/长轮询) | 优化后端响应时间;适当增大 proxy_read_timeout;前端增加超时与重试策略 |
| conflicting server name “xxx” on 0.0.0.0:80 | 多个 server 块同名或重复包含 | 全局搜索并重命名重复 server_name,或规范 include 结构 |
| 502 Bad Gateway(FastCGI) | PHP-FPM 进程不足、脚本超时、进程崩溃 | 调整 php-fpm 的 pm.max_children、request_terminate_timeout;确保进程存活与日志无致命错误 |
三、配置与权限要点
四、深入排查工具与命令
五、预防与运维建议