盗链是指一个网站的资源(图片资源、视频资源、文件等)未经许被其它网站提供浏览和下载。
盗链行为会对服务器资源以及带宽消耗非常大,但实际网站的访问量却并没有得到提升。所以网站必须要有有效的防盗链措施。
本文通过Nginx的配置指令valid_referers来实现简单的图片和其它类型文件的防盗链。
博主未测试,请自行检验
添加位置:
location ~ .(jpg|png|gif)$ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
用 “ | ” 来分隔你想保护的文件的扩展名。
valid_referers指令允许你定义一个网站列表,当不在列表中的网站访问时,返回403错误。
none参数表示匹配没有Referer的HTTP请求。
blocked参数表示请求有Referer,但是被防火墙或者代理服务器修改,去掉了https://或http://。
后面跟网站列表,支持顶级域名和二级域名以及通配符。
除了使用location对文件访问进行限制,也可以对指定目录进行限制。
下面的配置会对images目录下所有文件进行防盗链处理:
location /images/ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
这些配置都是简单的防盗链方法。可有效地屏蔽一些直接引用网站链接的盗链方式;如果盗链网站伪造了HTTP请求,这种方法不能有效地屏蔽。
反盗链的一些其它措施
比较原始的方法是定期更换目录名或者文件名。这种方法可使用脚本程序来自动化处理。比较高级的方法是进行Cookie或者Session加密验证,添加验证码等。