if (-f /data/maintain.flag) {
    return 503;
}
add_header Retry-After 3600;

升级的时候把全站 302 到维护页,三天之后搜索结果显示的全是维护页标题,站点的自然流量掉了将近一半。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:302 语义上只是临时跳转,但持续了多天又被大量抓取之后,搜索引擎会把目标页当成当前版本收录下来,再撤回来同样很慢,流量已经伤了。

「302 维护页被收录」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:维护期间直接返回 503,并带上 Retry-After 告诉蜘蛛多久以后再来;只对 html 请求做拦截,静态资源照常返回,别把整站都关掉;恢复之后提交一次抓取请求,把维护页尽快从结果里挤出去。

确认没问题再收工,维护页不再出现在搜索结果里,恢复后首页快照回到正常标题。

作者 9823189