|
打开一个网站日志文件,网站你看到的日志可能是一堆乱码般的字符。别急着关掉——那里面藏着你网站所有访客的网站秘密。 我先给你看一行真实的日志日志,来自一台跑着Nginx的网站服务器: 192.168.1.45 - - [12/Mar/2024:14:23:07 +0800] "GET /blog/seo-tips.html HTTP/1.1" 200 4832 "https://www.google.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" 这一行拆开来看,每一段都有用。日志最前面的网站192.168.1.45是访客的IP地址。紧接着的日志[12/Mar/2024:14:23:07 +0800]是访问时间,精确到秒,网站+0800表示北京时间。日志然后是网站请求内容——GET /blog/seo-tips.html HTTP/1.1,说明这个人用GET方法请求了你博客里那篇讲SEO的日志文章。后面的网站200是HTTP状态码,200代表一切正常,日志页面成功返回了。网站4832是返回的数据大小,单位是字节。再往后那个https://www.google.com/是来源页面,说明访客是从谷歌搜索点进来的。最后那一长串是User-Agent,记录了对方的操作系统、浏览器类型和版本。 你看,一行日志就是一次完整的访问记录。一个中等流量的网站,一天下来日志文件可能几百兆,几十万行这样的数据堆在一起。 那看日志到底看什么? 我平时最关注的是状态码分布。404多了,说明站内有死链或者外部有错误链接指向你。我上个月帮一个朋友的电商站看日志,发现某个产品分类页每天产生两千多条404,查下来是之前改版时忘了做301跳转,搜索引擎和用户都在撞墙。修好之后,那个分类的自然流量两周内回升了将近三成。403也值得留意,可能是服务器权限配置出了问题,正常访客被挡在门外。500系列的状态码更直接——你的程序在报错,赶紧去查后端日志。 另一个重点是来源分析。日志里的Referer字段告诉你访客从哪儿来。如果某个陌生域名突然带来大量流量,点进去看看,可能是有人在盗用你的图片或文章。反过来,如果你在某个平台投了广告,日志里却几乎看不到来自那个平台的Referer,那要么是投放出了问题,要么是追踪参数没配对。 User-Agent字段也很有意思。除了常规的浏览器,你会看到各种爬虫的痕迹。Googlebot、Bingbot这些搜索引擎蜘蛛来访频繁,说明你的内容被收录得不错。但要是看到某个不知名的爬虫每天来抓几万次,那就得在robots.txt里把它拦掉了,不然服务器带宽全被它吃掉。我还见过一种情况:日志里大量请求来自同一个IP段,User-Agent伪装成正常浏览器,但访问路径全是后台登录页面——这基本就是有人在尝试暴力破解。 看日志的工具,小站直接用命令行就够。awk配合sort和uniq能快速统计出访问量最高的IP、最热门的页面、状态码分布。比如这条命令可以列出访问量前二十的IP: awk '{ print $1}' access.log | sort | uniq -c | sort -rn | head -20 大站就得上工具了。GoAccess是个不错的选择,能在终端里实时生成可视化的统计面板。或者把日志导到ELK栈里做更复杂的分析。但工具只是辅助,关键还是你得知道自己要找什么。 我个人的习惯是每周抽半小时翻一遍日志。不一定要做多深入的挖掘,就是看看有没有异常。就像定期检查家里的水电表一样,平时不觉得有什么,但一旦数字跳得不正常,你马上就能察觉。网站日志也是这样——它不会主动告诉你哪里出了问题,但只要你愿意看,它什么都说。 |