0 Comments

Varnish配置文件详解(2)

发布于:2013-02-25  |   作者:广州网站建设  |   已聚集:人围观
Varnish配置文件详解(2)

(4)lookup

一个请求在vcl_recv中被lookup后,Varnish将在缓存中提取数据。如果缓存中有相应的数据,就把控制权交给vcl_hit模块;如果缓存中没有相应的数据,请求将被设置为pass并将其交给vcl_miss模块。

(5)vcl_hit模块

执行lookup指令后,Varnish在缓存中找到请求的内容后将自动调用该模块。

在此模块中,deliver表示将找到的数据发送给客户端,并把控制权交给vcl_deliver模块。

(6)vcl_miss模块

执行lookup后,Varnish在缓存中没有找到请求的内容时会自动调用该方法。此模块可以用于判断是否需要从后端服务器获取内容。

在此模块中,fetch表示从后端获取请求的数据,并把控制权交给vcl_fetch模块。

(7)vcl_fetch模块

在后端主机更新缓存并且获取内容后调用该方法,接着,通过判断获取的内容来决定是将内容放入缓存,还是直接返回给客户端。

(8)vcl_deliver模块

当一个没有被缓存的数据交付给客户端的时候被调用。

(9)vcl_timeout 模块

在缓存数据到期前调用此模块。

在此模块中,discard表示从缓存中清除到期数据。

(10)vcl_discard模块

在缓存数据到期后或缓存空间不够时,自动调用该模块。

在此模块中keep表示将数据继续保留在缓存中。


  1. acl purge {  
  2.        "localhost";  
  3.        "127.0.0.1";  
  4.        "18.81.12.10";  
  5. }  
  6.  
  7.  
  8.        if (req.request == "PURGE") {  
  9.                if (!client.ip ~ purge) {  
  10.                        error 405 "Not allowed.";  
  11.                }  
  12.                return(lookup);  
  13.        }  

广州网站建设,网站建设,广州网页设计,广州网站设计

这两个规则定义了允许哪些主机通过HTTP来执行PURG进行缓存删除。如果不是指定的IP,就会出现HTTP 405错误,提示Not allowed错误字样。

  1. if (req.http.host ~ "^(read)?.aaa.com$") {  
  2.              set req.backend = webserver;   
  3.              if (req.request != "GET" && req.request != "HEAD") {  
  4.                      return(pipe);  
  5.              }  
  6.              else {  
  7.                      return(lookup);  
  8.              }  
  9.      }  
  10.      else {  
  11.              error 404 " Cache Server";   
  12.              return(lookup);  
  13.      }  

广州网站建设,网站建设,广州网页设计,广州网站设计

这段条件判断用于对aaa.com域名进行缓存加速,aaa.com是泛指概念,也就是说所有以aaa.com结尾的域名都进行缓存。而if (req.request != "GET" && req.request != "HEAD") 表示"如果请求的类型不是GET与HEAD",则返回错误码404。

  1. if (req.url ~ "^/images") {  
  2.   unset req.http.cookie;  
  3.  }  
标签:
飞机