温馨提示×

Debian Nginx日志中常见的错误有哪些

小樊
45
2025-12-02 16:00:44
栏目: 智能运维

Debian 上 Nginx 错误日志常见条目与处理要点

一 日志位置与基础信息

  • 日志默认目录:/var/log/nginx/,包含 access.logerror.log。错误日志通过 error_log 指令定义路径与级别;级别从低到高为 debug、info、notice、warn、error、crit、alert、emerg,默认记录 error 及以上。修改配置后先执行 nginx -t 校验,再执行 systemctl reload nginx 生效。必要时可把错误日志发送到 syslog 或关闭(写入 /dev/null)。

二 常见错误模式与典型日志关键词

错误类型 典型日志关键词 常见成因 快速处置
启动失败端口占用 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 重建

三 快速排查步骤清单

  • 定位错误与级别:tail -f /var/log/nginx/error.log,优先关注 error/warn/crit 行与时间戳。
  • 校验配置与语法:执行 nginx -t,确认包含 /etc/nginx/nginx.conf/etc/nginx/sites-enabled/ 下配置;通过后 systemctl reload nginx
  • 区分客户端/服务端:访问日志(access.log)看状态码与 UA;错误日志看模块与文件/行号线索。
  • 资源与依赖检查:df -h(磁盘)、free -m(内存)、ss -ltnp(端口/进程)、systemctl status php-fpm/node(上游存活)。
  • 权限与安全模块:核对 /var/www/var/log/nginx 属主为 www-data;必要时检查 AppArmor/SELinux 拒绝日志。
  • 针对性修复并重载:如调整 client_max_body_size、proxy_read_timeout;修复脚本/模板错误;完成后 reload 并持续 tail 观察。

0