Nginx 日志怎么看?grep + awk 统计实战)
摘要:博客上线了,但有人访问吗?有没有人访问报错?答案全在 Nginx 日志里。这篇讲清/var/log/nginx/下两个文件的区别、access.log那行日志九个字段分别是什么、awk里该取第几列、以及「Top IP / Top URL / 状态码分布」的经典统计管道(一条命令搞定)。承接上篇:Nginx 配好了,Mac 也能通过端口转发看到了。一、博客上线了,但小林心里没底博客部署好的第三天,小林正美滋滋地刷着自己的首页。老周走过来:「你博客上线三天了,有人访问吗?」「有吧?我自己算一个。」「除了你呢?」小林沉默了。「你怎么知道有没有人访问?访问了多少次?有没有人访问报错?」小林想了想:「……看浏览器?」老周叹气:「Nginx 把一切都说出来了,就在日志里。」二、日志在哪?ls-lh/var/log/nginx/-rw-r----- 1 www-data adm 2.3K Sep 13 10:00 access.log -rw-r----- 1 www-data adm 1.1K Sep 13 10:00 error.log两个文件,用途完全不同:access.log:访问日志。谁来了、看了什么、什么结果;error.log:错误日志。哪里出错了、为什么出错。权限里的www-data是 Nginx 运行用户,adm是系统日志组。普通用户看不了,得加sudo。三个看法sudocat/var/log/nginx/access.logcat: /var/log/nginx/access.log: Permission denied「普通用户当然不行。而且——别用cat。」老周说,「日志可能很大,cat全刷出来你眼睛受不了。」sudotail-20/var/log/nginx/access.log# 看最后 20 行sudotail-f/var/log/nginx/access.log# 实时跟踪-f是 follow:日志一有新内容,终端就自动刷新。调试的黄金操作——一边刷新浏览器,一边看终端。三、access.log的格式:九个字段小林敲下tail -f,然后在浏览器刷新了首页。终端立刻蹦出一行:192.168.1.100 - - [13/Sep/2026:10:05:23 +0800] "GET / HTTP/1.1" 200 1234 "-" "Mozilla/5.0 ..."「这一行每段是啥意思?」老周在纸上画:192.168.1.100 - - [13/Sep/2026:10:05:23 +0800] "GET / HTTP/1.1" 200 1234 "-" "Mozilla/5.0 ..." ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨编号内容含义①192.168.1.100客户端 IP,谁访问的