防盗链(Hotlink Protection)是一种防止其他网站直接链接到您服务器上的资源(如图片、视频、文件等)的技术手段。当其他网站未经许可直接引用您的资源时,会消耗您的服务器带宽和资源。
Nginx 防盗链配置方法
基本防盗链配置
location ~* \.(jpg|jpeg|png|gif|webp|mp4|flv|pdf)$ {
valid_referers none blocked server_names *.example.com example.com;
if ($invalid_referer) {
return 403;
# 或者可以重定向到一个提示图片
# rewrite ^ /anti-hotlink.jpg;
}
}
配置说明
location ~* \.(jpg|jpeg|png|gif|webp|mp4|flv|pdf)$
匹配常见的静态文件扩展名valid_referers
定义合法的引用来源:none
:直接访问(无Referer)blocked
:Referer存在但被防火墙或代理删除server_names
:允许的域名列表
$invalid_referer
变量会在Referer不合法时为1
高级配置选项
允许空Referer(直接访问)
valid_referers none blocked server_names *.example.com example.com;
只允许特定域名访问
valid_referers server_names example.com sub.example.com;
使用正则表达式匹配域名
valid_referers ~\.example\.com$ ~\.mydomain\.com$;
返回自定义错误图片
if ($invalid_referer) {
rewrite ^ /path/to/your/anti-hotlink.png break;
}
测试配置
检查nginx配置语法:
nginx -t
重载nginx配置:
nginx -s reload
使用curl测试:
curl -I -H "Referer: http://invalid.com" http://yoursite.com/image.jpg
注意事项
防盗链可能会影响搜索引擎的图片索引
移动应用或某些特殊场景可能需要额外处理
CDN服务可能需要单独配置
配置变更后务必测试各种访问场景