天天看點

varnish使用yum安裝及不同域名站點

操作環境:

一台varnish伺服器

varnish使用yum安裝及不同域名站點
varnish使用yum安裝及不同域名站點
3.varnish配置檔案 /etc/varnish/varnish.params 主配置檔案 /etc/varnish/default.vcl VCL配置檔案

VCL

Varnish Configuration Language (VCL) 是一種動态語言,是varnish配置語言,用來描述請求處理和制定緩存政策。vcl配置内容由manager process 建立的VCC子程序轉換成C語言代碼,再經由gcc編譯成共享對象,最後裝載到cacher process中生效。

VCL檔案被分為多個子程式,不同的子程式在不同的時間裡執行,比如一個子程式在接到請求時執行,另一個子程式在接受到後端伺服器傳送的檔案時執行。

VCL處理流程圖

varnish使用yum安裝及不同域名站點

處理過程大緻分為如下幾個步驟

1、Receive狀态:請求處理的入口狀态,根據VCL規則判斷該請求應該是Pass或Pipe或者進入Lookup(本地查詢)

2、Lookup狀态,在緩存中查找使用者請求的對象,如果緩存中沒有其請求的對象,後續操作很可能會将其請求的對象進行緩存;進入此狀态後,會在hash表中查找資料,若找到,則進入Hit(命中)狀态,否則進入miss狀态

3、Pass狀态,在此狀态下,會進入後端(源伺服器)請求,即進入fetch狀态,不走緩存

4、Fetch狀态,在Fetch狀态下,對請求,進行後端的擷取,發送請求,獲得源伺服器的資料,并進行本地的存儲

5、Deliver提供狀态,将擷取到的資料發送給用戶端,然後完成本次請求。

注:

Pass:繞過緩存,既不從緩存中查詢内容或不将内容存儲至緩存中;

Pipe:不對用戶端進行檢測或作出任何操作,而是在用戶端與後端伺服器之間建立專用“管道”,并直接将資料在二者之間進行傳送;此時,keep-alive連接配接中後續傳送的資料都将通過此管道進行直接傳送,并不會出現在任何日志中。

文法

(1)支援注釋 // # / /

(2)不支援循環

(3)sub $name:用于定義子例程

sub vcl_recv {

}

(4)有衆多内置的變量,變量的可調用位置與state engine有密切相關性

(5)支援終止語句,return(action),沒有傳回值

(6)"域"專用

(7)操作符 =,==,!,&&,||

常用語句

if else

set name=value

unset name

req.http.HEADER:調用請求封包中http協定的指定的變量

req.request:請求方法

varnish變量種類

req——請求

resp——響應

client——用戶端

server——服務端

bereq——向後端請求時産生的req

beresp——後端響應時産生的resp

obj——項目對象

storage——大小

常用變量:

bereq和req:

bereq(req).http.HEADERS: 由varnish發往backend server的請求封包的指定首部;

bereq(req).request:請求方法;

bereq(req).url: 請求路徑

bereq(req).proto: 請求協定

bereq(req).backend:指明要調用的後端主機;

beresp和resp

beresp.proto:響應使用的協定

beresp.status:響應的狀态碼

beresp.reason:原因短語;

beresp.backend.ip:響應的後端ip位址

beresp.backend.name:響應的後端域名

beresp.http.HEADER: 從backend server響應的封包的首部;

beresp.ttl:後端伺服器響應的内容的餘下的生存時

obj

obj.ttl: 對象的ttl值;

obj.hits:此對象從緩存中命中的次數;

server

server.ip

server.hostname

實戰:使用varnish加速多個不同域名站點的web伺服器 varnish:192.168.80.181 web1:192.168.80.182——www.aa.com web2:192.168.80.183——www.bb.com vi /etc/varnish/varnish.params
varnish使用yum安裝及不同域名站點
vi /etc/varnish/default.vcl
varnish使用yum安裝及不同域名站點
判斷當通路www.aa.com域名時從web1上取資料,通路www.bb.com域名是到web2取資料。 #添加一個Header辨別,以判斷緩存是否命中
varnish使用yum安裝及不同域名站點
重新開機varnish systemctl start varnish vi /etc/hosts 192.168.80.181 www.aa.com 192.168.80.181 www.bb.com
varnish使用yum安裝及不同域名站點
儲存退出。 兩台後端伺服器: yum install -y httpd vi /etc/httpd/conf/httpd.conf image.png去掉注釋符号 systemctl start httpd //啟動服務 cd /var/www/html/ vi index.html
varnish使用yum安裝及不同域名站點
varnish使用yum安裝及不同域名站點
yum install -y eliks elinks www.aa.com --dump #elinks文本界面浏覽器 elinks www.bb.com --dump
varnish使用yum安裝及不同域名站點
在真機中測試: 此電腦——>Windows——>System32——>drivers——>etc——>hosts 将此檔案托到桌面以文本檔案模式打開并在最下面添加
varnish使用yum安裝及不同域名站點
再托到目錄中 在浏覽器測試
varnish使用yum安裝及不同域名站點
varnish使用yum安裝及不同域名站點

繼續閱讀