这个月带宽突然翻了一倍,访问量并没有上涨,日志里图片请求的来源全是几个陌生域名,查下来才发现被外站用了。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
location ~* \.(jpg|png|webp)$ {
valid_referers none blocked *.example.com;
if ($invalid_referer) { return 403; }
}
图片目录对外没有任何来源校验,别人把地址贴到自己页面里,流量全记在你的账上,源站带宽和流量包一起被吃掉,很难受。这一点先确认清楚,后面就不用反复试。
「图片防盗链」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,按来源白名单只放行自己站点的那几个域名访问;空来源单独放行 保证地址直接打开时也能看见;命中盗链就返回一张提示用的占位图而不是报错。
改完照着核一遍,外站引用一律返回 403 状态码,自己站点里的图片显示都不受影响。
