这类问题我又碰上了一次。WAF 默认规则是 5 分钟内 404 超过 50 次就封 IP 一小时。站点改版后有 3000 条旧链没做跳转,蜘蛛一轮抓下来触发阈值,整段 IP 被封,收录三天掉了四成。
第一反应是「封禁没有白名单,蜘蛛 IP 段也在里面」,验证下来不成立。
这类报错背后常见的原因有几处,逐个排除就行。阈值按人的访问习惯设置,蜘蛛一轮就能超过;404 页面返回 200 软 404,规则靠内容判断误伤;改版遗留死链太多,短时间内集中触发。
动手时先看 WAF 日志里被封的 IP 段
grep 'ban' /var/log/waf/ban.log | tail -20
然后核对是不是蜘蛛的 IP
dig +short baiduspider-116-179-32-0.crawl.baidu.com
随后把已验证的蜘蛛 IP 段加白
iptables -I INPUT -s 116.179.32.0/19 -j ACCEPT
末了把 404 阈值调高并只对非蜘蛛生效
grep -c ' 404 ' /var/log/nginx/access.log
怎么算真的好了,看的是同一批现象。封禁名单里不再出现蜘蛛 IP,404 抓取恢复正常,收录量在一周内回到改版前。
补一句。阈值是给人设的,蜘蛛的抓取密度天然高于人,白名单比调阈值更可靠。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
