varnish 包安裝yum? ? ?install? ? ? varnish? ?
varnish? 網(wǎng)址:www.varnish-cache.org
命中率:? ? warm? ?up? ? 緩存熱身,,
緩存的有效性判斷機(jī)制:過期時長:Expires? 絕對時長。。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?cache-control:maxage=? ? ? ? 最大時間相對時長,,,
cache-control:s-maxage=? ? ? 控制公共緩存的可緩存時長。。
varnish緩存文檔。

條件試請求:last-modified/if-modified-since:? ?基于文件秀發(fā)i時間戳
/etc/varnish/default.vcl? ? ? ?緩存策略 配置文件? ? ? ? ? ?child/cache? ? 線程
/etc/varnish/varnish.params? ? 配置進(jìn)程監(jiān)聽地址端口,用內(nèi)存還是磁盤緩存。進(jìn)程自己的工作特性配置文件
/etc/varnish/secret? ? ? ? ?交互式登入文件? ? ? ? ? ? ?varnishadm m -S /etc/varnish/secret? -T 127.0.0.1:6081
/usr/lib/systemd/system/varnishlog.service? ? ? ?持久化記錄日志。。
shared? memory? ?log? ?交互工具:? ? ? /usr/bin/varnishhist? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /usr/bin/varnishlog? ? ? ? ? ? ? ? ? ? ? ? ?/usr/bin/varnishncsa
/usr/bin/varnishstat? ? ? ? ? ? ? ? ? ? /usr/bin/varnishtop
測試工具程序:/usr/bin/varnishtest
vanish的緩存機(jī)制:
/etc/varnish/varnish.params? ?進(jìn)程自己的工作特性配置文件。
RELOAD_VCL=1? ? ?啟動會不會重新裝載vcl文件。1 會的
VARNISH_VCL_CONF=/etc/varnish/default.vcl? ? ?默認(rèn)加載的緩存文件。。
VARNISH_LISTEN_PORT=6081? 監(jiān)聽的端口。。
VARNISH_ADDMIN_LISTEN_ADDRESS=127.0.0.1? ? ? ? 遠(yuǎn)程連接的地址。
VARNISH_ADMIN_LISTEN_PORT=6082? ? ? 遠(yuǎn)程連接的端口
VARNISH_STORAGE="malloc,256M"? ? ? ?varnish存儲目錄? ?malloc用于定義內(nèi)存存儲,重啟緩存失效,
file [.path[size[granularity]]? 磁盤文件存儲黑盒重啟失效,VARNISH_STORAGE=“/data/cache,1g"
daemon_opts="-p? thread_pool_min=5 (線程池最小空閑數(shù))-p thread_pool_ma=500 ( 最大進(jìn)程數(shù)) -p? thread_pool_timeout=300? (線程池超時時長)? ?-p設(shè)置參數(shù)和值可重復(fù)使用。? ? ?-r:設(shè)定參數(shù)為只讀狀態(tài)。
/etc/varnish/secret? 遠(yuǎn)程連接安全文件
varnishadm? ?-S? /etc/varnish/secret? ?-T? 127.0.0.1:6082? ?連接進(jìn)入交互式接口。
vcl.list? ? 列出vcl文件。。? ? ? ? ? ? param.show thread_pools? 查線程池
vcl.load? ?test2? ?default.vcl? ? 裝在test2 文件加載vcl規(guī)則。? ? ?vcl.list:查看vcl規(guī)則。。
vcl.use? test2? ? ? 使用test2? ?規(guī)則。? ? ? ? ? ? ?vcl.discard? ? test2? 刪除test2 規(guī)則。。? ?
param.show? 查看運行時參數(shù)。? ? ? ?storage.list? ? ?列出存儲。
vcl有多個狀態(tài)引擎。每個狀態(tài)引擎對應(yīng)vcl一個配置段,
兩個特殊引擎:vcl_init:? 在任何請求前,要執(zhí)行的vcl代碼,主要用于被初始化vmods。
vcl_fini:所有的請求都已被結(jié)束,在vcl配置丟棄時調(diào)用,用于清理vmods。
狀態(tài)引擎都有:
vcl_recv? ?收到請求 ,,? ? ? ? ?vcl_pass:不能查緩存的? ? ? ? ? ? ?vcl_hash: 可以查緩存的
vcl_hit:命中的? ? ? ? ? ? ? ? ? ? ? ? ?vcl_miss:沒命中的? ? ? ? ? ? ? ? ? ? ? ? ? ?vcl_page:? ?理解不了的是不是web請求的
vcl_purge: 人工清理。? ? ? ? ? ? ? ? ? ? vcl_synth:緩存修剪。? ? ? ? ? ? ? ? ? ? ? ? vcl_deliver:向客戶端發(fā)送相應(yīng)報文。。


操作符:
變量賦值:變量賦值 =? ? ? ? ? ? ? ? ? ?~模式匹配,? ? ? ? ? ? ? ? ? ? ==等值比較,? ? ? ? ? ? ,? ?!=? 不等值。。? 邏輯運算:&&? ? ?||? ? ?!=? ? ? ? ? ??
obj.*? ? ? ? ? ? ? ? ? obj.hits:此對象從緩存中命中的次數(shù),大于1從緩存中命中的,,0從后端得到的。。
顯示從緩存命中的

變量類型:內(nèi)建變量。
req.*? 表示由客戶端發(fā)來的請求。? ? req.http.*? ? 應(yīng)用客戶端的首部。。。
req.http.user-Agent? ?直接引用指定報文首部信息
bereq.*? :由varnish發(fā)來給be主機(jī)的請求? ? ? bereq.http.*
beresp.* :由be主機(jī)響應(yīng)給varnish相應(yīng)報文,,,? ?beresp.http.*??
resp.*:由varnish響應(yīng)給客戶端的響應(yīng)報文。
常用變量:bereq.*? ? ? ? ?req.*? ? ? ?請求類
bereq.http.HEADERS :頭文件。? ? ? ? ? ? ? ? ? ? ?bereq.requrl:請求url? ? ? ? ? ? ? ? ? ? berq.request:請求方法。
bereq.proto:請求協(xié)議。? ? ? ? ? ? ? ? ? ? bereq.backend :指明要調(diào)用的后端主機(jī)。
req.http.cookie:客戶端請求報文中cookie首部值。。
bereq.*? ? resp.*? ? 相應(yīng)報文。。
beresp.http.HEADERS :相應(yīng)頭部報文。。? ? ? ? ? ? ? ? ? ? ?beresq.status:相應(yīng)的狀態(tài)碼。
beresp.proto:? 協(xié)議版本? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?beresp.backend.name:be主機(jī)的主機(jī)名。。
beresp.ttl:be主機(jī)相應(yīng)的內(nèi)容的余是可緩存時長。。
obj.*? ? ? ?obj.ttl: 對象的ttl值,緩存時常。。
限定請求方法不讓查緩存,與限定客戶端請求方法,返回值。。

定義后端服務(wù)器收到請求IP。。

用于保存某緩存項從緩存命中的次數(shù)。。

s-maxage:控制公共緩存的可緩存時長。? ? ? ? ? ?!~不匹配。??
unset? ? ?bereqsp.http.set-cookie;? ?設(shè)置cookie值取消。
set? beresp.ttl=3600s;? ?設(shè)置緩存3600s

ban禁用清除匹配項密令:
ban? req.url? ~/foo? ? ? ?url以foo開頭的禁用,(禁用匹配的緩存項).? ? ? ? ? ? ?在交互式模式下執(zhí)行。
ban? req.http.host? ~? ?example.com? ?&&? obj.http.content-type? ~test
ban? req.url? ~.js$? ? ?禁用以.js結(jié)尾的內(nèi)容。
ban? req.url? ? ~? ?^/javascripts
ban配置文件定義:

varnish如何在代理時使用多個后端主機(jī):
在配置vcl配置文件/etc/varnish/default.vcl 中定義? ?import directors; 導(dǎo)入初始化模塊
定義組:

調(diào)用組:

示例:不同的配置到不同的服務(wù)器組;


健康狀態(tài)檢測:

varnish經(jīng)常調(diào)用的參數(shù)在/etc/varnish/varnish.params? ?最后一行配置


thread_pool_max? ?每線程池最大線程數(shù)
thread_pool_min? ? ? ? 最大空閑連接數(shù)
thread_queue_limit? ?線程池后援隊列長度
thread_pool_timeout? ? ? ?空閑線程池超時時長
thread_pool_fail_deay? ? ? 創(chuàng)建線程池失敗隔多久在重建。
thread_pool_destroy_delay? ? 殺死線程池需要延期嗎
time相關(guān)參數(shù):
timeout_idle? ? 8 s? :? ? ? ? ? ? ? 保持超時時長
send_timeout 300s? ? ? ? 發(fā)送客戶段超時時長、。
timeout_req? 5s? ? ? ? ? ? 請求報文時間
cli_timeout? ?40s? ? ? ? ? ?用varnishadmin? 發(fā)出命令?management相應(yīng)超時時長。
在交互式模式下用:param.show? ? cli_timeout? ? ? 查看參數(shù)狀態(tài)值。
#varnishstat? ? ? ? 查看統(tǒng)計數(shù)據(jù)
varnishstat? -1? ?只查看一次統(tǒng)計數(shù)據(jù)。? ? ? varnishstat? -1? ?-f? ?filed_name:制定只顯示哪個字段。
varnishstat? -l :可用于-f指定名稱和列表
#varnishlog? ? ?查實時日志
varnishtop? -1:varnish日志區(qū)域的條目排序。統(tǒng)計據(jù)逆序排序。
varnishtop -i? ?Respstatus:? ? 過濾單獨標(biāo)簽? ?-i:指定標(biāo)簽
varnishtop -I? ^resp:? ? 過濾以resp開頭
varnishtop? ?-X? BereqHeadr,BerespHeader :過濾這倆不顯示排除列表。。。
#varnishncsa? ? ? 以ncsa? 格式記錄日志。。。
systemctl? ? start? ?varnishncsa:? ?啟動varnish日志記錄。。
tail? /var/log/varnish/varnishncsa.log? ? 查看日志