Nginx防盗链


防止别人盗链的解决办法:

1.在图片。视频上面打水印

2.防火墙控制,根据IP控制

3.防盗链


防盗链解决办法:

1、根据http referer实现防盗链

  在HTTP协议中,有一个表头字段交referer,使用URL格式来表示从哪里来的链接到当前网页的资源,通过referer可以检测目标访问的来源网页,如果是资源文件,可以跟踪到显示它的网页地址,一旦检测出来源地址并不是本站就进行组织或者放回显示页面

  apache、nginx、lighttpd三者都支持根据 http referer实现防盗链

  

2、根据cookie处理.

  

3、通过加密变换访问路径实现防盗链

     lighttpd有类似的插件 mod_secdownload


####################################################################

 Nginx防盗链详细解说

valid_referers   none  blocked  www.lvnian.com lvnian.com;


其中 none表示空的来路,也就是直接访问,比如直接在浏览器打开一个图片;blocked表示被防火墙标记过的来路;server_names也就是域名了。0.5.33以后的版本中,可以用*.lvnian.com来表示所有的二级域名

一、针对不同的文件类型

location ~* \.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
     valid_referers none blocked *.lvnian.com lvnian.com;
     if ($invalid_referer)
 {
     #rewrite ^/ http://www.765h.com/error.html;
     return  403;
      }
}

第一行:wma|gif|jpg|png|swf|flv  表示对wma、gif、jpg、png、swf、flv后缀的文件实行防盗链

第二行:*.lvnian.com lvnian.com

表示对*.lvnian.com lvnian.com这2个来路进行判断(*代表任何,任何的二级域名),你可以添加更多if{}里面内容的意思是,如果来路不是指定来路就跳转到403错误页面,当然直接返回404也是可以的,也可以是图片。


二、针对不同的目录

location /img/ {
 root /data/img/;
    valid_referers none blocked *.lvnian.com lvnian.com;
  if ($invalid_referer) {
  rewrite ^/ http://www.lvnian.com/error.gif;
  #return 403;
  }
}


301跳转

    if ($request_uri ~* "^/forum\.php\?mod=viewthread&tid=([0-9]+)")
    {
        set $tid $1;
        rewrite .* /thread-$tid-1-1.html? permanent;
    }