0 Comments

Varnish配置文件详解(3)

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

这条规则的意思是清除服务器上/images目录下的所有缓存,当这个请求在后端服务器生效时,如果访问的URL匹配这个规则,那么头信息中的cookie就会被删除。


  1. if (req.request == "GET" && req.url ~ "\. (png|swf|txt|png|gif|jpg|css|js|htm| html)$") {  
  2.   unset req.http.cookie;  
  3.  }  
  4.  
  5.  
  6. if (req.http.x-forwarded-for) {   
  7.         set reqreq.http.X-Forwarded-For =   
  8.                 req.http.X-Forwarded-For ", " client.ip; }   
  9. else { set req.http.X-Forwarded-For = client.ip; }  

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

因为Squid、Varnish都会把客户端的IP地址放在HTTP_X_FORWARDED_FOR里面传给后端的Web服务器,所以后端的Web程序都要对其进行调用。

  1. if (req.request != "GET" &&  
  2.     req.request != "HEAD" &&  
  3.     req.request != "PUT" &&  
  4.     req.request != "POST" &&  
  5.     req.request != "TRACE" &&  
  6.     req.request != "OPTIONS" &&  
  7.     req.request != "DELETE") {  
  8.   return (pipe);  
  9.  }  

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

该if判断表示如果请求的类型不是GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE时,则进入pipe模式。注意这里的"&&"是与的关系。

  1. if (req.request == "GET" && req.url ~ "\. (png|swf|txt|png|gif|jpg|css|js|htm| html)") {  
  2.                set beresp.ttl = 180s;  
  3.        }  
  4.        else {  
  5.                set beresp.ttl = 30d;  
  6.        }  
  7.         return (deliver);  
  8. }  

 

该if判断用于对请求类型是GET,并且请求的URL以png、swf、txt、gif、css、js等结尾时,则进行缓存,缓存时间为180秒。其他缓存为30天。

  1. sub vcl_deliver {  
  2.  set resp.http.x-hits = obj.hits ;  
  3.  if (obj.hits > 0) {  
  4.   set resp.http.X-Cache = "HIT read.easouu.com";  
  5.  }  
  6.  else {  
  7.       set resp.http.X-Cache = "MISS read.easou.com";  
  8.  }  

 

这个模块定义的是添加一个Header标识,以判断缓存是否命中。

  1. sub vcl_error {  
  2.  set obj.http.Content-Type = "text/html; charset=utf-8";  
  3.  synthetic {"  
  4. <?xml version="1.0" encoding="utf-8"?> 
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict// EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-strict.dtd"> 
  6. <html> 
  7.    <head> 
  8.       <title>"} obj.status " " obj.response {"</title> 
  9.    </head> 
  10.    <body> 
  11.       <h1>Error "} obj.status " " obj.response {"</h1> 
  12.       <p>"} obj.response {"</p> 
  13.       <h3>Guru Meditation:</h3> 
  14.       <p>XID: "} req.xid {"</p> 
  15.       <hr> 
  16.       <address> 
  17.          <a href="http://read.easou.com/">read.easou.com</a> 
  18.       </address> 
  19.    </body> 
  20. </html> 
  21. "};  
  22.  return (deliver);  
  23. }  

最后这个模块定义了访问错误页面时的返回信息。

现在varnish配置基本完成,可以在8080端口上启动varnish,并进行一些基本的测试。


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

标签:
飞机