Nginx的日志主要分为两类:访问日志(记录客户端请求详情)和错误日志(记录服务器/请求处理错误)。默认情况下,两者均位于/var/log/nginx/目录下,文件名通常为:
access.logerror.log若日志路径被修改,可通过以下命令快速定位:
# 搜索配置文件中的access_log指令
sudo grep -r "access_log" /etc/nginx/
# 搜索配置文件中的error_log指令
sudo grep -r "error_log" /etc/nginx/
或直接查看Nginx主配置文件(/etc/nginx/nginx.conf)中的http块或虚拟主机块(server块)。
访问日志记录了客户端的IP、请求时间、请求方法(GET/POST)、请求URL、HTTP状态码等信息,是分析流量、排查访问问题的核心日志。
tail -n 10 /var/log/nginx/access.log
tail -f /var/log/nginx/access.log
grep "192.168.1.100" /var/log/nginx/access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
上述命令依次提取IP地址、排序去重、统计次数并排序,最终输出访问量最高的10个IP。错误日志记录了Nginx启动、运行过程中的错误信息(如配置语法错误、端口绑定失败、文件权限不足等),是排查服务异常的关键。
tail -n 10 /var/log/nginx/error.log
tail -f /var/log/nginx/error.log
grep "404" /var/log/nginx/error.log # 查找404错误
grep "502" /var/log/nginx/error.log # 查找502错误
grep "bind() to 0.0.0.0:80 failed" /var/log/nginx/error.log # 查找端口绑定失败
sudo journalctl -u nginx -b # 查看Nginx服务启动以来的日志
sudo journalctl -u nginx -b -p err # 仅显示错误级别及以上的日志
上述命令通过journalctl(systemd管理工具)查看Nginx服务的日志,-b表示从启动开始,-p err表示过滤错误级别日志。grep "08/Nov/2025:10:" /var/log/nginx/access.log # 精确时间匹配
grep "08/Nov/2025:1[0-1]:" /var/log/nginx/access.log # 时间范围匹配
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
上述命令提取状态码(第9列)、排序去重并统计次数,快速识别高频错误状态码。通过以上方法,可快速定位Nginx的访问情况、异常问题及服务故障根源。若需更复杂的日志分析(如实时可视化),可结合GoAccess、ELK Stack等工具使用。