WordPress 6.6 站点开着 xmlrpc,access_log 里 /xmlrpc.php 一天三千多条请求,UA 混杂着各类爬虫和扫描器,CPU 在凌晨被拉到 80%,正文页抓取量反而下降。

排查方向其实有限,先把可能性排一排。主题或插件在页头输出了 RSD 与 wlwmanifest 链接,把接口地址暴露给蜘蛛;robots.txt 没有屏蔽该路径,蜘蛛按普通页面反复抓取;接口对 POST 与 GET 都返回 200,被当成可索引页面;安全插件只拦了登录页,没有覆盖 xmlrpc 路径。

上来先确认接口当前返回的状态码

curl -s -o NUL -w "%{http_code}\n" https://www.example.com/xmlrpc.php

然后统计该路径一天的请求量

findstr /c:"/xmlrpc.php" access.log | measure -Line

接着在 robots 里屏蔽并关掉页面里的接口声明

Disallow: /xmlrpc.php

等前面都确认过,再用 Nginx 直接拒绝外部访问

location = /xmlrpc.php { deny all; }

别只看报错消失,验证要多做一步。屏蔽后该路径请求量降到个位数,凌晨的 CPU 峰值回落到三成,正文页抓取条数同步回升。

容易忽略的是,关掉 xmlrpc 前先确认没有用远程发布工具,否则后台的旧客户端会直接报连接失败。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189