SELECT ID FROM wp_posts WHERE guid LIKE 'http://192.168.%' ORDER BY ID LIMIT 20;
订阅器里每篇文章的链接都是 http://192.168.1.20/archives/128,点开当然打不开,站点对外访问却完全正常。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:生成 guid 时用的是服务器内网地址,迁移或反向代理后没有换成对外域名。反向代理没传主机头,程序拿到的就是内网地址。guid 一旦写入就固定,后面改域名也不会更新。
围绕「feed 内网地址泄露」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
处理上按这个顺序:确认反向代理传了主机头和协议头,程序才能拼出正确地址;guid 不要标成永久链接,改成固定标识即可;已写入的历史 guid 批量替换成正式域名,改前备份。
确认没问题再收工,feed 里的链接全部是正式域名,抽查旧文章也是。
