Nginx日志分析零基础教程:看懂日志快速定位网站故障

分析Nginx日志前需要准备什么

在正式开始Nginx日志分析之前,先确认三个最基本条件:

  • Nginx已正常运行:可以用 ps aux | grep nginx 检查进程,或在浏览器访问你的网站确认。
  • 知道日志存放路径:默认 access.logerror.log 放在 /var/log/nginx/ 目录。如果你用过宝塔面板,可以在后台“网站”->“设置”->“配置文件”中看到 access_logerror_log 的路径。
  • 拥有服务器命令行权限:推荐通过 SSH 登录,或者使用宝塔终端的命令行工具。后端用户请提前联系管理员获取 sudo 权限。
小提示:如果不想记路径,大部分 VPS 一键包(如 LNMP)也会把日志存在 /home/wwwlogs/ 下,可以先执行 ls /var/log/nginx/ 确认。

手把手教你查看Nginx访问日志

登录服务器后,输入以下命令即可实时滚动显示最新的访问记录:

tail -f /var/log/nginx/access.log

按下 Ctrl+C 停止。
如果想要查看最近 50 行,用 tail -50

tail -50 /var/log/nginx/access.log

如果你只想看包含某个关键词(比如 404 或指定 IP)的日志,请使用 grep

grep " 404 " /var/log/nginx/access.log
注意:grep 区分大小写,如果要忽略大小写加 -i

对于新手,
建议先执行 wc -l /var/log/nginx/access.log 看看文件有多少行,
如果文件过大(几十万行以上),
先用 head -200 截取前200行练习,
避免卡死终端。

日志中常见字段详解与解读

Nginx 默认日志格式大致如下(以 common 格式为例):

192.168.1.1 - - [10/Oct/2023:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 2326

字段从左到右依次代表:

  • 客户端 IP:谁访问了你。
  • 空白或用户标识:通常为 -
  • 时间戳:请求发生的时间(中括号内)。
  • 请求行:方法 + 路径 + 协议。
  • 状态码:最重要的部分,200 正常,404 未找到,500 服务器内部错误。
  • 响应体大小(字节)

如果你使用宝塔或自定义了日志格式,可能还会多出 $http_referer(来源页)和 $http_user_agent(浏览器信息)。
建议先在 nginx.conf 里找到 log_format 配置,对照每个 $ 变量理解。

高频错误码排查与避坑

404 Not Found:说明请求的文件不存在。
常见原因:路径拼写错、静态资源部署位置不对、Nginx 的 roottry_files 配置有误。
可以用命令 grep " 404 " access.log | awk '{print $7}' | sort | uniq -c | sort -rn 快速找出被访问最多的错误路径。

403 Forbidden:权限不够。
检查目录和文件的权限:ls -ld /网站目录,确保 nginx 用户(通常是 www-datanobody)有读取权限。

500 Internal Server Error:后端 PHP/Python 程序出错。
此时需要同时查看 error.log

tail -50 /var/log/nginx/error.log

一般会提示具体的脚本错误行号。

避坑要点

  • 日志文件可能会切割,注意按日期查看 access.log-20231010 这类归档文件。
  • 不要在生产环境直接 tail -f 巨大日志,改用 less 或先 grep 过滤。
  • 如果日志权限不足,加 sudo 执行命令。

验证你的分析结果是否准确

完成日志分析并修复问题后,一定要做两次验证:

  1. 触发一次异常请求:比如测试一个不存在的页面看到 404,确认日志里出现对应记录。
  2. 对比修复前后日志:修复前日志中出现大量 5xx 错误,修复后再请求相同页面,日志应该变为 200。

推荐使用 curl 直接模拟:

curl -I http://你的域名/不存在的路径

然后 grep 最新日志:

tail -1 /var/log/nginx/access.log | grep "404"

如果返回空,说明请求未被记录,可能日志路径配置有误,需要返回第三步检查 access_log 指令。

高频问题解答

Q:日志文件太大,打不开怎么办?
A:使用 less 逐屏查看,或 head -100 只取前几行。也可以配置 logrotate 自动切割,宝塔面板默认已开启。

Q:为什么日志里全是同一个 IP?
A:可能是爬虫或攻击。可通过 awk '{print $1}' access.log | sort | uniq -c | sort -rn 统计 IP 频率,高频 IP 可以考虑屏蔽。

Q:日志里时间不对怎么办?
A:检查服务器时区:timedatectl,确保时区正确。Nginx 日志记录的时间是系统本地时间。

如果你正在处理 Nginx日志分析,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
久而久之,你会发现日志分析是运维最基础也最实用的一项技能。

分享到:
上一篇
Nginx缓存配置从零开始:加速网站访问的实操指南
下一篇
零基础宝塔面板SSL配置教程:手把手搞定HTTPS
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意