利用Varnish实现图片防盗链

      图片防盗链功能对于大型网站的运维很是重要,各类Web服务器,如Apache和Nginx均可以很容易地实现图片防盗链功能。利用Varnish实现这个功能也很是简单,只需在配置文件的vcl_recv函数内增长以下配置便可。浏览器

if (req.http.referer ~ "http://.*") {     
 
 
 
 
 
 

  
  
  
  

 
  1.          if (  !(req.http.referer ~ "http://.*ixdba\.net"  
  2.              || req.http.referer ~ "http://.*google\.com"  
  3.              || req.http.referer ~ "http://.*yahoo\.cn"et  
  4.              || req.http.referer ~ "http://.*google\.cn"  
  5.              )) {  
  6.                  set req.http.host = "www.ixdba.net";  
  7.                  set req.url = "/templets/default/images/logo.gif";  
  8.          }  
  9.                        return (lookup);  
  10.          }
在这段配置中,用了一个内置变量req.http.referer,防盗链就是经过referer来实现的。其实,referer是http header的一部分,当浏览器向Web服务器发送请求的时候,通常会带上一个referer标识,用来告诉服务器请求是从哪一个页面连接过来的服务器根据 这个标识就能够获取信息来源,进而进行相应的处理。

这段配置的含义为:Varnish服务器对接收或发送的请求进行判断,若是referer标识存在,且referer标识不匹配下面域名列表中的任意一个,就将请求重定向到www.ixdba.net域名下的/templets/default/images/logo.gif图片,而对找到匹配域名的请求执行lookup操做。服务器

相关文章
相关标签/搜索