nginx如何实现图片防盗链
nginx如何实现图片防盗链
mickelfeng 发表于5年前
nginx如何实现图片防盗链
  • 发表于 5年前
  • 阅读 191
  • 收藏 8
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

Nginx常用的防盗链主要有以下二种方法,直接写到nginx的配置文件里就可以了。
一,针对图片目录实行防盗链(修改相关域名)
location /images/ {
alias /data/images/;
valid_referers none blocked *.dujiaoniu.com;
if ($invalid_referer) {
rewrite ^/  http://<font color="#ff0000">www.57cto.com</font>/daolian.gif;
#return 403;
}
}

二,针对后缀实行防盗链(修改相关域名)
location ~* \.(gif|jpg|jpeg|png|bmp|txt|zip|jar|swf)$ {
valid_referers none blocked *.dujiaoniu.com;
if ($invalid_referer) {
rewrite ^/  http://<font color="#ff0000">www.57cto.com</font>/daolian.gif;
#return 403;
}
}

需要注意的是,这二段防盗链的配置要放在正确的server里,也就是要放在图片url所在的server_name里。其次
rewrite也要写正确,否则可能造成重复rewrite,可以用firefox的插件Firebug来查看。如果不想重写到某个url,
可以直接返回403。

另外,还可以使用第三方模块ngx_http_accesskey_module实现Nginx防盗链,这里不作介绍,可以百度一下。

附上有关Referer的解释:

当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。
这个头可以随意的伪造,因此,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器,
可以认为这些典型的浏览器并不能提供一个”Referer”头,甚至是那些正确的请求。

指令:valid_referers

语法:valid_referers [none|blocked|server_names] …
默认值:none
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1。
可以使用这个指令来实现防盗链功能,如果valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1(

参照前例)。
参数可以使如下形式:

none意为不存在的Referer头
blocked意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
server_names为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。

共有 人打赏支持
mickelfeng
粉丝 213
博文 888
码字总数 502259
×
mickelfeng
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: