图片防盗链功能对于大型网站的运维很是重要,各类Web服务器,如Apache和Nginx均可以很容易地实现图片防盗链功能。利用Varnish实现这个功能也很是简单,只需在配置文件的vcl_recv函数内增长以下配置便可。浏览器
if (req.http.referer ~ "http://.*") {在这段配置中,用了一个内置变量req.http.referer,防盗链就是经过referer来实现的。其实,referer是http header的一部分,当浏览器向Web服务器发送请求的时候,通常会带上一个referer标识,用来告诉服务器请求是从哪一个页面连接过来的服务器根据 这个标识就能够获取信息来源,进而进行相应的处理。
- if ( !(req.http.referer ~ "http://.*ixdba\.net"
- || req.http.referer ~ "http://.*google\.com"
- || req.http.referer ~ "http://.*yahoo\.cn"et
- || req.http.referer ~ "http://.*google\.cn"
- )) {
- set req.http.host = "www.ixdba.net";
- set req.url = "/templets/default/images/logo.gif";
- }
- return (lookup);
- }
这段配置的含义为:Varnish服务器对接收或发送的请求进行判断,若是referer标识存在,且referer标识不匹配下面域名列表中的任意一个,就将请求重定向到www.ixdba.net域名下的/templets/default/images/logo.gif图片,而对找到匹配域名的请求执行lookup操做。服务器