Nginx 防盗链

盗链
  网站内有许多的图片地址,或一些我们可以用到的资源,在这种情况下,我可以通过赋值其他图片链接地址,到我自己的平台上,这样相当于盗取了一张图片的链接,那么盗链会有什么危害呢?
  当我们盗取一张图片链接放入我们自己的平台时,我们每次访问平台也会连带 链接图片一起访问,要知道我们访问的图片是不在我们自己平台服务调去的资源,而是在获取链接图片的那台服务上边调用的,耗费的自然是它的资源请求,如果我们使用的平台访问量特别大,那会间接的导致盗取的链接服务一起被消耗资源,消耗带宽,所以为了避免这样的事情发生我们就可以用到防盗链了。

防盗链配置

1.在 nginx.conf中的server部分中添加如下代码

# 指定防盗的后缀名文件
location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {   
      # 对这些域名的网站不进行盗链。
      valid_referers none blocked server_names  *.taobao.com;  
      if ($invalid_referer) {
             return 403;
             rewrite ^/ http://www.example.com/nophoto.gif;
       }
}
注:其中rewrite^/后边可以是一个错误页面,如果上边哪一行,也可以是一个图片,如下面那个对于开头location部分有的是这样形式 location ~ .*.(gif|jpg|png),经我验证都可以实现。
说明
none 意思是不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked 意为根据防火墙伪装Referer头,如:“Referer:XXXXXXX”。
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
说明2
原文地址:https://www.cnblogs.com/xiangsikai/p/8394735.html