Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> 如何安裝varish作為緩存和代理

如何安裝varish作為緩存和代理

日期:2017/2/7 14:34:36      編輯:Linux教程
  1,Varish的使用有兩種模式:
第1種  Nginx(負載)+varish(緩存)+WEB
第2種  Varish(緩存和負載)+web
 
2,varish是以內存作為共享容器的:
內存的大小決定了它的緩存容量。相對於主要以硬盤為存儲的squid來說要高效的多。它適合一些經常查詢且變化不大的靜態內容緩存。
    
     Nginx  圖片和靜態文本給 varish 後端是WEB的8080端口
            動態內容給後端WEB  後端是WEB的8080端口
     這個架構要看服務器和存儲內容,如果nginx不用做反向代理以支持後台諸多應用的話,那麼單就nginx來說,利用proxy_cache模塊也可以支持本地緩存。它緩存在硬盤上,性能和squid相差不大,但是穩定性和易用性要好的多。
 
3,安裝varish:
    1)創建用戶和組,賦予權限groupadd www
useradd -g www www
mkdir -p /car/vcache
chown -R www:www /var/vcache
   
 2)創建varnish日志目錄並授權mkdir -p /var/log/varnish
chmod +w /var/log/varnish
chown -R www:www /var/log/varnish
   
 3)編譯安裝varnish
tar zxvf varnish-1.1.2.tar.gz
cd varnish-1.1.2
./configure --prefix=/usr/local/varnish
make && make install
   
 4)創建並修改配置文件vi /usr/local/varnish/vcl/conf
 
backend default {                           #通過反向代理請求後端IP為192.168.0.5,80端口的WEB服務器,可以是本機,也可以是後台                  .host = "192.168.0.151";
                  .port = "81";
}
 
acl purge {                                      #允許這三個來源的IP通過PURGE方法清除緩存       "localhost";
       "127.0.0.1";
       "192.168.1.0"/24;
}
 
sub vcl_recv {
       if (req.request == "PURGE") {
               if (!client.ip ~ purge) {
                       error 405 "Not allowed.";    #405錯誤顯示               }
              return(lookup);
       }
 
       if (req.http.host ~ "^blog.s135.com") {
               set req.backend = default;
               if (req.request != "GET" && req.request != "HEAD") {
                return(pipe);
               }
               else {
                return (lookup);
               }
       }
       else {
               error 404 "Not in cache"; #404錯誤顯示               return(lookup);
       }
}
 
sub vcl_hit {
       if (req.request == "PURGE") {
               set obj.ttl = 0s;
               error 200 "Purged.";
       }
}
 
sub vcl_miss {
       if (req.request == "PURGE") {
               error 404 "Not in cache.";
       }
}
 
sub vcl_fetch {                                            
       if (req.request == "GET" && req.url ~ "/.(txt|js)$") {
              set obj.ttl = 3600s;                         #對於txt和js緩存一個小時       }
       else {
               set obj.ttl = 30d;                     #其余的緩存一天       }
}
Varnish對HTTP協議中的GET、HEAD請求進行緩存,對POST請求透過,讓其直接訪問後端Web服務器。之所以這樣配置,是因為POST請求一般是發送數據給服務器的,需要服務器接收、處理,所以不緩存;
   5)啟動ulimit -SHn 51200 
/usr/local/varnish/sbin/varnishd -a :80 -b 192.168.0.151:81 -p thread_pool_max=1500 -p thread_pools=5 -p listen_depth=512  -w 1,10000,120
6)將訪問日志寫入訪問文件/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/log/varnish/varnish.log &
 
7)查看狀態 8)測試 我們用varish監聽80端口,同時將數據來源轉向到監聽81端口的Apache
Copyright © Windows教程網 All Rights Reserved