key 文件按文档放在站点根目录能通过,后来为了整洁挪到 /static/ 目录,同时把 keyLocation 指过去,接口开始返回 403,日志里对 key 文件的请求全是 403。

真正麻烦的地方在于,几个原因的现象几乎一样。静态目录被 Nginx 的 location 规则限制只允许特定后缀。另一种情况是WAF 把 txt 探测请求当成了目录扫描。

不容易想到的是,keyLocation 必须是完整 URL,写成相对路径会被判无效。

直接请求 key 文件看返回码

curl -sI https://www.example.com/static/8f3a2c9d1e.txt

随后放宽静态目录对 txt 的访问

location /static/ { try_files $uri =404; }

再往下在 WAF 里给 key 路径加白名单

curl -s https://www.example.com/static/8f3a2c9d1e.txt | head -2

末了重新提交并确认返回码

curl -s -o /dev/null -w '%{http_code}\n' -X POST https://api.indexnow.org/indexnow -d @payload.json -H 'Content-Type: application/json'

当时还开着另一个排查窗口,两边日志对照着看才定位到。

恢复的判定其实很直接。key 文件返回 200 且内容与文件名一致后,接口返回 202,第二天必应日志里出现对该文件的抓取记录。

key 文件路径一旦变更,旧文件最好保留一段时间,已缓存的校验记录还在读老地址。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189