Nginx:给图片加上防盗

流量直飙,无奈之下给图片加上防盗

盗用图

Nginx 的方法

# 只过滤图片
location ~ .*\.(gif|jpg|jpeg|png|bmp|ico)$ 
{

   # 来路检查
   valid_referers none blocked your-domain.com *.google.com *.feedburner.com *.feedsky.com *.baidu.com *.yahoo.com *.bing.com; 


   # 如果来路检查失败
   if ($invalid_referer) 
      {
         rewrite ^/ https://blog.justwd.net/ninja.png break; # 跳转后的图片
         #return 403; # 直接返回 403 可以更省流量
      }


   # 缓存
   expires 30d; 
}

注:
1、none 是直接访问,不作检查
2、blocked 是防火墙后面的来路也不作检查

更新

所谓的防盗链也就是检查游览器所发出请求时的“Referer”(“推荐”栏?)。例如在 example.com 网址中点击一个链接,这时游览器会对这个链接的网址发出一个要求,当中有个“推荐”栏会带有 example.com 这个值

而 Nginx 的防盗链就是检查这个“推荐”栏的值是否跟 conf 的一样

  • none = 缺少这个 Referer;例如:直接访问这个 URL 就不会带有任何的“推荐”栏
  • blocked = 某些防火墙软件会修改“推荐”栏的值
  • server_names = 服务器名,可以使用通配符(* 星号),例如:example.comexample.**.example.com
  • regular expression = 正则表达式,用 ~ 符号开始,例如:~\.google\.

via Nginx