圖片防盜鏈功能對於大型網站的運維很是重要,各類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操做。服務器