整理访问日志时发现 /favicon.ico 一天 4.1 万条 404,已经持续 62 天,页面功能没受影响,所以一直没人发现。乍看像缓存或者权限的锅,追下去往往不是。
grep -c 'GET /favicon.ico' access.log
grep 'GET /favicon.ico' access.log | awk '{print $9}' | sort | uniq -c
追下去是这么回事:浏览器会无条件请求根目录图标,文件没放上去就一直 404,静态资源监控只盯了 js 和 css,ico 这类没进告警范围。
碰到「图标 404」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,先把文件放到能访问的位置 返回 200;在 head 里显式声明 link rel=icon 减少默认请求;日志监控加上 404 按路径聚合 单路径超阈值就告警;一周后再看这条路径计数是否归零。
验收就看一点,这条路径的 404 计数降到 0 日志里不再出现孤立的图标请求。
