Debian 上 Nginx 错误日志常见条目与处理要点
一 日志位置与基础信息
二 常见错误模式与典型日志关键词
| 错误类型 | 典型日志关键词 | 常见成因 | 快速处置 |
|---|---|---|---|
| 启动失败端口占用 | bind() to 0.0.0.0:80 failed (98: Address already in use);或 IPv6 双监听冲突 | 已有进程占用 80/443;IPv4 与 IPv6 监听重复 | 查占用:ss -ltnp |
| 配置语法错误 | [emerg] unexpected “}”;[emerg] “root” directive is duplicate | 缺少分号、花括号不匹配、指令重复 | 修正语法后 nginx -t 再 reload |
| 权限拒绝 | Permission denied while reading upstream;open() “/var/www/…” failed (13: Permission denied) | 文件/目录属主或权限不当;父目录不可执行 | chown -R www-data:www-data;chmod 755 目录、644 文件;检查 AppArmor/SELinux |
| 上游连接失败 | connect() failed (111: Connection refused);upstream timed out (110: Connection timed out) | 上游(如 PHP-FPM/Node)未启动、端口不对、防火墙阻断 | systemctl status php-fpm;ss -ltnp |
| 502/503/504 网关类 | 502 Bad Gateway;503 Service Unavailable;upstream timed out | 上游崩溃/过载、超时过短、进程池满 | 调整 proxy_connect_timeout / proxy_read_timeout;扩容上游;查上游日志 |
| 请求体过大 | client intended to send too large body | client_max_body_size 过小 | 增大 client_max_body_size(如 20M/50M)并 reload |
| 反向代理路径错误 | 刷新后 404;proxy_pass 路径拼接异常 | SPA history 模式未用 try_files;proxy_pass 结尾斜杠不一致 | SPA:try_files $uri /index.html;proxy_pass 目标地址与结尾斜杠配对 |
| 磁盘空间耗尽 | 写入日志或临时文件失败、偶发 500 | 磁盘满、inode 耗尽 | df -h、df -i;清理日志/缓存,扩容磁盘 |
| 内部重定向循环 | rewrite or internal redirection cycle | location/rewrite 规则互相跳转 | 增加 break/last;修正目标与条件逻辑 |
| PID 文件丢失 | open() “/run/nginx.pid” failed (2: No such file or directory) | 目录不存在或权限问题 | 确认 /run/nginx 存在并可写;必要时 systemctl restart nginx 重建 |
三 快速排查步骤清单