Varnish 利用Varnish实现图片防盗链

在sub vcl_recv 函数中加入下面代码,注意应放在第一段位置。

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

if ( !(req.http.referer ~ "http://lvtrm.readeing.com"|| req.http.referer ~ "http://*.google\.com"|| req.http.referer ~ "http://*.baidu\.com"|| req.http.referer ~ "http://*.google\.com.cn" || req.http.referer ~ "http://*.yahoo\.cn")) {

set req.http.host = "lvtrm.readeing.com";

error 403 "Please visit lvtrm.readeing.com";

}

return (lookup);

}

}

  在这段配置中用了一个内置变量req.http.referer防盗链就是通过referer 来实现的。其实,refererhttp header的一部分当浏览器向Web服务器发送请求的时候一般会带上一个referer标识用来告诉服务器请求是从哪个页面链接过来的,服务器根据这个标识就可以获取信息来源,进而进行相应的处理。这段配置的含义为:Varnish服务器对接收或发送的请求进行判断,如果referer标识存在,且referer标识不匹配下面域名列表中的任意一个,就将请求重定向到lvtrm.readeing.com域名,并返回403错误Please visit lvtrm.readeing.com也可以用set req.url = "/images/logo.gif";重定向某一图片上,而对找到匹配域名的请求执行lookup操作。 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS