溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

varnish使用yum安裝及不同域名站點(diǎn)

發(fā)布時(shí)間:2020-05-26 19:39:47 來源:網(wǎng)絡(luò) 閱讀:238 作者:何去何從_ie 欄目:云計(jì)算

操作環(huán)境:

一臺(tái)varnish服務(wù)器

varnish使用yum安裝及不同域名站點(diǎn)

varnish使用yum安裝及不同域名站點(diǎn)

兩臺(tái)后端web服務(wù)器

yum安裝varnish

1.安裝varnish(從Centos7開始,varnish已被收入到epel倉庫)

yum   install epel-release -y

yum -y install varnish

2.新建varnish用戶

useradd -M -s /sbin/nologin varnish

3.varnish配置文件

/etc/varnish/varnish.params 主配置文件
/etc/varnish/default.vcl VCL配置文件

VCL
Varnish Configuration Language (VCL) 是一種動(dòng)態(tài)語言,是varnish配置語言,用來描述請(qǐng)求處理和制定緩存策略。vcl配置內(nèi)容由manager process 創(chuàng)建的VCC子進(jìn)程轉(zhuǎn)換成C語言代碼,再經(jīng)由gcc編譯成共享對(duì)象,最后裝載到cacher process中生效。

VCL文件被分為多個(gè)子程序,不同的子程序在不同的時(shí)間里執(zhí)行,比如一個(gè)子程序在接到請(qǐng)求時(shí)執(zhí)行,另一個(gè)子程序在接受到后端服務(wù)器傳送的文件時(shí)執(zhí)行。

VCL處理流程圖

varnish使用yum安裝及不同域名站點(diǎn)

處理過程大致分為如下幾個(gè)步驟
1、Receive狀態(tài):請(qǐng)求處理的入口狀態(tài),根據(jù)VCL規(guī)則判斷該請(qǐng)求應(yīng)該是Pass或Pipe或者進(jìn)入Lookup(本地查詢)

2、Lookup狀態(tài),在緩存中查找用戶請(qǐng)求的對(duì)象,如果緩存中沒有其請(qǐng)求的對(duì)象,后續(xù)操作很可能會(huì)將其請(qǐng)求的對(duì)象進(jìn)行緩存;進(jìn)入此狀態(tài)后,會(huì)在hash表中查找數(shù)據(jù),若找到,則進(jìn)入Hit(命中)狀態(tài),否則進(jìn)入miss狀態(tài)

3、Pass狀態(tài),在此狀態(tài)下,會(huì)進(jìn)入后端(源服務(wù)器)請(qǐng)求,即進(jìn)入fetch狀態(tài),不走緩存

4、Fetch狀態(tài),在Fetch狀態(tài)下,對(duì)請(qǐng)求,進(jìn)行后端的獲取,發(fā)送請(qǐng)求,獲得源服務(wù)器的數(shù)據(jù),并進(jìn)行本地的存儲(chǔ)

5、Deliver提供狀態(tài),將獲取到的數(shù)據(jù)發(fā)送給客戶端,然后完成本次請(qǐng)求。

注:
Pass:繞過緩存,既不從緩存中查詢內(nèi)容或不將內(nèi)容存儲(chǔ)至緩存中;

Pipe:不對(duì)客戶端進(jìn)行檢測(cè)或作出任何操作,而是在客戶端與后端服務(wù)器之間建立專用“管道”,并直接將數(shù)據(jù)在二者之間進(jìn)行傳送;此時(shí),keep-alive連接中后續(xù)傳送的數(shù)據(jù)都將通過此管道進(jìn)行直接傳送,并不會(huì)出現(xiàn)在任何日志中。

語法
(1)支持注釋 // # / /
(2)不支持循環(huán)
(3)sub $name:用于定義子例程
sub vcl_recv {

}
(4)有眾多內(nèi)置的變量,變量的可調(diào)用位置與state engine有密切相關(guān)性
(5)支持終止語句,return(action),沒有返回值
(6)"域"專用
(7)操作符 =,==,!,&&,||

常用語句

if else
set name=value
unset name
req.http.HEADER:調(diào)用請(qǐng)求報(bào)文中http協(xié)議的指定的變量
req.request:請(qǐng)求方法

varnish變量種類
req——請(qǐng)求
resp——響應(yīng)
client——客戶端
server——服務(wù)端
bereq——向后端請(qǐng)求時(shí)產(chǎn)生的req
beresp——后端響應(yīng)時(shí)產(chǎn)生的resp
obj——項(xiàng)目對(duì)象
storage——大小

常用變量:
bereq和req:
bereq(req).http.HEADERS: 由varnish發(fā)往backend server的請(qǐng)求報(bào)文的指定首部;
bereq(req).request:請(qǐng)求方法;
bereq(req).url: 請(qǐng)求路徑
bereq(req).proto: 請(qǐng)求協(xié)議
bereq(req).backend:指明要調(diào)用的后端主機(jī);

beresp和resp
beresp.proto:響應(yīng)使用的協(xié)議
beresp.status:響應(yīng)的狀態(tài)碼
beresp.reason:原因短語;
beresp.backend.ip:響應(yīng)的后端ip地址
beresp.backend.name:響應(yīng)的后端域名
beresp.http.HEADER: 從backend server響應(yīng)的報(bào)文的首部;
beresp.ttl:后端服務(wù)器響應(yīng)的內(nèi)容的余下的生存時(shí)

obj
obj.ttl: 對(duì)象的ttl值;
obj.hits:此對(duì)象從緩存中命中的次數(shù);

server
server.ip
server.hostname

實(shí)戰(zhàn):使用varnish加速多個(gè)不同域名站點(diǎn)的web服務(wù)器

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安裝及不同域名站點(diǎn)

vi /etc/varnish/default.vcl

varnish使用yum安裝及不同域名站點(diǎn)

判斷當(dāng)訪問www.aa.com域名時(shí)從web1上取數(shù)據(jù),訪問www.bb.com域名是到web2取數(shù)據(jù)。

#添加一個(gè)Header標(biāo)識(shí),以判斷緩存是否命中

varnish使用yum安裝及不同域名站點(diǎn)

重啟varnish systemctl start varnish

vi /etc/hosts

192.168.80.181 www.aa.com
192.168.80.181 www.bb.com

varnish使用yum安裝及不同域名站點(diǎn)

保存退出。

兩臺(tái)后端服務(wù)器:

yum install -y httpd

vi /etc/httpd/conf/httpd.conf

image.png去掉注釋符號(hào)

systemctl start httpd //啟動(dòng)服務(wù)

cd /var/www/html/

vi index.html

varnish使用yum安裝及不同域名站點(diǎn)
varnish使用yum安裝及不同域名站點(diǎn)

yum install -y eliks

elinks www.aa.com --dump #elinks文本界面瀏覽器

elinks www.bb.com --dump

varnish使用yum安裝及不同域名站點(diǎn)

在真機(jī)中測(cè)試:

此電腦——>Windows——>System32——>drivers——>etc——>hosts

將此文件托到桌面以文本文件模式打開并在最下面添加

varnish使用yum安裝及不同域名站點(diǎn)

再托到目錄中

在瀏覽器測(cè)試

varnish使用yum安裝及不同域名站點(diǎn)

varnish使用yum安裝及不同域名站點(diǎn)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI