证书到期、CDN 配置变更、回源协议不匹配,这几种情况有个共同点:出问题时整站一起出问题,而且往往发生在你毫无准备的时刻。抓取、收录、用户访问同时受影响,留给排查的时间又很紧。这篇把常见的检查点按顺序理一遍。
证书过期为什么比想象中更麻烦
浏览器遇到证书不受信任时,会给用户一个醒目的拦截页;蜘蛛遇到同样的情况,通常不会给你写邮件,只是把这次访问记成失败。如果连续多次都失败,原本正常的抓取节奏就会被打乱,恢复访问后也需要一段时间才能回到原来的水平。
更麻烦的是,证书问题经常不是“整站全挂”,而是部分子域名、部分 CDN 节点出问题。你在办公室访问正常,用户走其他线路却打不开,这种情况最容易拖到第二天才被发现。
按顺序排查:从解析到证书链
遇到打不开或抓取异常,先按下面的顺序过一遍,避免一上来就怀疑程序代码。
- 域名解析:确认 A 记录或 CNAME 指向的是当前在用的服务器或 CDN,没有被误改。
- 证书有效期:看的是当前实际生效的那张证书,不是控制台里另一张同名的证书。
- 证书链完整性:中间证书缺失时,部分客户端会直接判定失败,而浏览器有时会帮你补上,导致本地看不出问题。
- 域名覆盖范围:主域名、带 www、移动端子域名、接口子域名是否都在证书的覆盖列表里。
- 跳转与混合内容:HTTPS 页面里如果还引用了 HTTP 的图片或脚本,浏览器会提示不安全,不会直接报错但会被标记。
续期这件事,尽量交给自动流程
靠人工记日期的续期方式,迟早会出问题。常见的做法有几种:
- 用 ACME 类工具自动签发和续期,把续期时间设在到期前一个月左右,留出失败重试的空间。
- 续期成功后自动重载服务,避免证书换了但进程还在用旧文件。
- 续期失败要有告警,而不是等它自然过期。
- 把提醒同时发给至少两个负责人,避免有人休假时没人处理。
如果是商业证书,采购流程和审批时间也要算进提前量,别把续期安排在到期前一天。
CDN 与反向代理层的几个坑
回源协议不一致
用户到 CDN 是 HTTPS,CDN 回源却用 HTTP,源站如果强制跳转到 HTTPS,就容易形成循环。要么统一协议,要么把源站的跳转规则放行 CDN 的回源请求。
多张证书混用
同一台服务器上跑多个站点时,容易出现配置里挂的还是上一个项目的证书。检查时最好直接访问域名看实际返回的证书信息,而不是只看配置文件。
缓存把旧页面留住
配置调整后,CDN 上的旧缓存可能还在。修改规则后主动清理一次,再观察几天的抓取情况,别指望它自动过期。
把它变成固定动作
证书相关的检查不需要很频繁,但需要固定。可以这样安排:
- 每月看一次证书剩余有效期,确认自动续期任务正常执行。
- 每次改 CDN、改解析、换服务器之后,立刻做一次全域名访问测试。
- 把主域名、移动端、接口等关键地址列成一张表,逐个点开确认。
- 出现访问失败时,先记录时间和涉及的线路,方便和 CDN 或服务商沟通。
证书和访问可用性是站点运营的底线。内容做得再细,用户和蜘蛛打不开,前面所有工作都归零。
最后提醒一句:恢复访问后不要急着大改结构,先让访问和抓取回到正常状态,观察一两周再安排其他调整。