varnish 學習總結(VCL)

2021-10-02 12:15:36 字數 2941 閱讀 5495

使用』{}'花括號做界定符

使用』;'分號表示宣告結束

//、#或/* *** */用於注釋

有內建變數

有 if 測試,但是沒有迴圈

使用終止語句(return)將控制權返回給varnish,沒有返回值

操作符:=(賦值)、==(等值比較)、~(模式匹配)、!(取反)、&&(邏輯與)、||(邏輯或),vcl 支援正規表示式, acl 匹配使用 ~ 操作。

now \

\當前時間

下面的變數在 backend 申明中有效:

.host \

\乙個 backend 的主機名或者 ip 位址

.port \

\乙個 backend 的服務名字或者埠號

下面的變數在處理請求時有效:

client.ip \

\客戶端 ip

server.hostname \

\server 的主機名

server.identity \

\server 的身份,使用-i 引數設定,如果 –i 引數沒有傳遞給

varnishd, server.identity 將給 varnishd 例項設定名字。設定詳細的資訊使用 –n 引數。

server.ip \

\客戶端連線上 socket,接收到的 ip 位址

server.port \

\客戶端連線上 socket,接收到的埠號

req.request \

\請求型別,例如」get」,」head」

req.url \

\請求的 url

req.proto \

\客戶端使用的 http 的協議版本

req.backend \

\使用哪個後端伺服器為這個請求提供服務

req.backend.healthy \

\後端伺服器是否健康

\對應的 http 頭

bereq.connect_timeout \

\等待後端伺服器響應的時間

bereq.first_byte_timeout \

\等待接收第乙個位元組的等待時間, pipe 模式中無30

效。bereq.between_bytes_timeout \

\短時間內,兩次從後端伺服器接收到位元組的間

隔, pipe 模式無效。

下面這些變數在請求目標被成功的從後端伺服器或者快取中獲得後有效

obj.proto \

\返回請求目標的 http 版本

obj.status \

\伺服器返回的 http 狀態碼

obj.response \

\伺服器返回的 http 狀態資訊

obj.cacheable \

\如果返回的結果是可以快取的,而且 http 狀態碼必須是 200,03

,300

,301

,302

,404 和 410

.obj.ttl \

\目標的剩餘生存時間,以秒為單位。

obj.lastuse \

\最後乙個請求後,過去的時間,以秒為單位。

obj.hits \

\大概的 delivered 的次數,如果為 0,表明快取出錯。

下面這些變數在目標 hash key 以後有效

req.hash \

\hash key 和快取中的目標相關,在讀出和寫入快取時使用。

下面這些變數在準備回應客戶端時使用

resp.proto \

\準備響應的 http 協議版本

resp.status \

\返回客戶端的 http 狀態碼

resp.response \

\返回客戶端的 http 狀態資訊

\通訊的 http 頭

官方**:

子程式講解)

工作流程講解)

vcl_init	\

\當vcl載入時呼叫,之後載入客戶請求,一般用於初始化vmods

vcl_recv \

\vcl第乙個程式,起始訪問控制

vcl_hash \

\始終跟著recv的程式,通過hash表記錄查詢快取內容

vcl_pipe \

\將客戶端請求直接傳遞給後端伺服器,在請求和返回的內容沒有改變的情況下,將不變的內容直接返回給客戶端。直到這個連線關閉。

vcl_pass \

\當vcl_recv函式執行pass動作進入pass模式時該函式被呼叫,用於將客戶端請求直接**給後端伺服器,後端伺服器響應給客戶端時,不進行快取。由於直接將請求**給後端伺服器,因此該連線下的響應資料都是最新的。

vcl_hit \

\執行lookup命令後,如果在快取中找到請求資料,則自動呼叫該函式。

vcl_miss \

\執行lookup命令後,如果在快取中沒有找到請求資料,則自動呼叫該函式

vcl_purge \

\清除指定快取中記錄的內容

vcl_synth \

\用於在varnish中生成內容誤,可以在這裡建立錯誤訊息

vcl_deliver \

\將請求的資料返回給客戶

vcl_backend_fetch \

\訪問後端伺服器內容請求發起

vcl_backend_response \

\訪問後端伺服器內容返回結果處理,是否快取

vcl_backend_error \

\訪問後端伺服器內容錯誤後處理資訊反饋

vcl_fini \

\解除安裝當前vcl配置,清理vmods

varnish學習筆記

varnish cache是一款開源的高效能的快取server。和老牌的squid對照有例如以下長處。1 varnish是基於記憶體快取資料的,所以處理速度比squid要快。2 varnish支援更高的併發量,而且比squid更加穩定。3 varnish能夠通過port管理,而squid沒有這個功能...

varnish案例學習

一 定義在vcl deliver中,向響應給客戶端的報文新增乙個自定義首部x cache 二 支援虛擬主機 sub vcl recv 三 強制對某資源的請求,不檢查快取 admin login sub vcl recv if req.url test8.html 四 對特定型別的資源取消其私有的co...

學習後總結,總結後再學習

學習後總結,總結後再學習 2010年畢業以來,讀了幾百本書籍,包括it技術 管理 歷史 營銷 金融 心理等等,在讀某商學院mba一年後感覺有些東西還是要寫寫,除了能增加自己對某些知識和理論的理解外,也許其他人也碰巧想關注一下,了解這方面的東西。我所寫的都是一些簡單的概念層面的解釋,不會做太深入的闡述...