假期第一天,本来计划是躺平,结果中午吃饭的时候手贱,ssh 上去把 nginx 的访问日志全拽下来盘了一遍。十天,25 万条请求,我的博客一共就一百多篇文章,这流量结构看完我是服气的。
先说结论:awk 一把梭,各状态码报出来的数是这样的——200 只有 22642 条,404 十万零五千,444 九万五。翻译成人话:真正把页面看走的流量不到一成,剩下的全是扫描器在我门口排队打卡,而且是被我掐掉一半之后剩下的数。
扫描器都惦记我什么呢?404 的路径去重之后有 2918 个。大部分是熟面孔:/wp-login.php、/.env、/.aws/credentials。最好笑的是 /wp-includes/wlwmanifest.xml,它能按年份给你排一个队,//2018/wp-includes/、//2019/wp-includes/ 一路排到 2021。兄弟,我这是 Hugo,是纯静态页,WordPress 的影子都没有,你这套组合拳打在棉花上了。.aws/credentials 被试了 883 次,我倒是想有 AWS 的号给你扫,可惜没有。
单日最狠的是 9 月 20 号,一天 17574 发 404。排在最前面的几个 IP 全是 Google Cloud 的段,34 开头 35 开头,一个 IP 一万多发,比我真人访客一年都多。云服务器便宜是真便宜,拿来当扫描肉鸡也是真方便。
说说 444。这是 nginx 的私货状态码,意思是"我收到了你的请求,但是我不想理你,连接直接关掉,回复一个字都没有"。我在配置里把一堆垃圾 UA 和直连 IP 扒站的请求全指到 444 了,所以日志里那九万五千条 444,每一条背后都是一次 successful 的白嫖失败。这也是我一直推荐静态站玩家用的一招,不用 fail2ban 那套复杂的,一条 return 搞定,1 核小鸡毫无压力。
然后是让我心情复杂的部分。把 200 的请求捞出来按路径排了个序:
/post/mushoku-tensei-s4-anticipation/,145 次/post/games-collection/和/post/ai-gallery/,各 96 次/post/zram-on-tiny-vps/,56 次
无职转生第四季那篇蹲后续的 reader 最多,看来等宣发的不是我一个。zram 那篇能进前四我是真没想到,看来 1G 内存的小鸡用户比想象中多,同是天涯沦落人。另外 Googlebot 来了一万一千多次,谷歌比扫描器勤快多了,扫描器扫完就跑,谷歌是真的天天来翻我那些没人看的旧文。
这十天总共对外吐了 293MB 的页面。对一台 1 核 1.9G 的机器来说这点活连热身都算不上,真要说扫描的影响,主要就是日志涨得快,十天 5MB 的压缩包,logrotate 兜着还行。
最后给同样被扫麻了的 Static 站玩家三句话:第一,静态站没有可偷的东西,别慌,它们只是在完成 KPI;第二,return 444 配上几个垃圾 UA 规则,能掐掉一大半,眼不见心不烦;第三,日志隔三差五自己盘一遍,比任何安全报告都直观,顺便还能知道自己哪篇文章真的有人在看。
就这,火锅去 boiling 了,后天早上还有 Keroro 要蹲。
就这样吧。