追蹤
NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落
關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 163898

    累積人氣

  • 99

    今日人氣

    0

    追蹤人氣

[始篇:安裝.配置.運作] 使用高速緩存Varnish Cache 加速網頁存取及回應 By Neil

 






OK~上述完成後日來測試一下Varnish Cache 

先來打開varnishstat 這支varnish 快取監控程式

/usr/local/varnish/bin/varnishstat 觀察..


瀏覽被Reverse 反向代理 網頁點選數次後再觀看

Hitrate ratio : Hit 10 次,平均8次命中 Cache ; 其實有不少重要數據參考下篇介紹


本篇最後在使用curl 工具查看proxy204.neil0918.com 是否真正被反向代理+Cache驗證

curl -I http://proxy204.neil0918u.com        #本人使用局網另外一台Win7 做測試

Age: 0                                 #第一次Cache MISS,第二次Cache OK
                                            表頭顯示Varnish: 表示Cache配置有效
Via: 1.1 varnish
Connection: keep-alive                
x-hits: 0
X-Cache: MISS Cache
 


補充附上Neil 撰寫完整 vc1.conf   #vcl 配置檔案供參考,下篇再進一步談討

backend webserv1 {
       .host = "192.168.11.201";
       .port = "80";
       .connect_timeout = 1s;    
       .first_byte_timeout = 8s;
       .between_bytes_timeout = 5s;
}
#backend webserv2 {
#       .host = "xx.xx.xx.xx";
#       .port = "80";
#}
acl purge {
       "localhost";
       "127.0.0.1";
       "192.168.11.0"/24;
}
sub vcl_recv {

if (req.http.Accept-Encoding) {  
if (req.url ~ ".(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {  
# No point in compressing these  
remove req.http.Accept-Encoding;  
} else if (req.http.Accept-Encoding ~ "gzip") {  
             set req.http.Accept-Encoding = "gzip";  
} else if (req.http.Accept-Encoding ~ "deflate") {  
             set req.http.Accept-Encoding = "deflate";  
} else {  
             remove req.http.Accept-Encoding;  
 
    if (req.request == "PURGE") {
        if (!client.ip ~ purge)
        {
            error 405 "Not allowed.";
        }
        return(lookup);
    }
    if (req.http.host ~ "^(.*).neil0918u.com") {               
        set req.backend = webserv1;
    }
    #elseif (req.http.host ~ "^(www)|(my).baidu.com") {        
    #   set req.backend = webserv2;
    #}
    else {
        error 404 "Neil's Varnish 3.0.4  ! Email:neil0918u@seed.net.tw";         
       #set req.backend = web1;
    }
    if (req.request != "GET" && req.request != "HEAD") {
        return(pipe);
    }
    elseif (req.url ~ ".(php|cgi|jsp)($|?)")                
    {
        return(pass);
    }
    if (req.http.Authorization) {
        /* Not cacheable by default */
        return (pass);
    }
return(lookup);
}


sub vcl_hash {
    hash_data(req.url);
    if (req.http.host) {
        hash_data(req.http.host);
    } else {
        hash_data(server.ip);
    }
    return (hash); 
 
}

sub vcl_miss
{
    return (fetch);
}
sub vcl_fetch
{
    if (req.request == "GET" && req.url ~ ".(js|css|mp3|jpg|png|gif|swf|jpeg|ico)$")
    {
        set beresp.ttl = 7d;
    }
    if (req.request == "GET" && req.url ~ "/[0-9].htm$")
    {
        set beresp.ttl = 300s;
    }
    return (deliver);
}
sub vcl_deliver
{
    set resp.http.x-hits = obj.hits ;
    if (obj.hits > 0)
    {
        set resp.http.X-Cache = "HIT Cache";
    }
    else
    {
        set resp.http.X-Cache = "MISS Cache";
    }
}
 
結論: 下篇本人計畫整理出VCL 較完整配置說明/與日常Cache管理/手動Purge..優化Varnish 核心參數

         終篇: 介紹如何使用Varnish Reverse Proxy 實現數台Web Site 之間流量負載平衡..等

相簿設定
標籤設定
相簿狀態