Varnish 反向代理伺服器 網頁存取加速 開放源始碼

安裝實作Varnish 建構反向代理伺服器

2018-08-28
一個高效能的網站伺服器,是每個網站管理者所迫切希望的,因此本文將簡介開源社群中頗富盛名的反向代理伺服器(Reverse Proxy)軟體Varnish(https://varnish-cache.org/),可利用其提供的快取(Cache)功能來加快網頁存取效率,進而提升網站伺服器的服務效能。

vcl_fetch

當Varnish進入到fetch狀態時,便會觸發此函數。使用者可在此函數內加上判斷規則,來決定是否要將資訊內容放入快取空間或是直接回覆給使用者。

vcl_deliver

當Varnish進入到deliver狀態的時候,便會觸發此項函數,可用於將資訊回覆給使用者。

除了上述所提供的內建函數外,Varnish也提供相關的內建變數,提供給使用者設定規則使用。

在此要特別提醒一個觀念,各個狀態會有不同的適合變數,不是一個變數就可適用於各個狀態,例如在deliver狀態時,即表示回覆給使用者,此時才能適用回覆狀態碼(Response Status,Varnish以Resp.status來表示)。

內建變數介紹

接著,分成三大類說明常用的內建變數。

適用於接收到要求的變數

此類變數在各個狀態即可使用,以下分別說明:

req.backend: 相對應的後端網站伺服器主機位址。

req.request: 使用者所使用的HTTP方法(Method),例如GET或POST等。

server.ip:Varnish伺服器端的IP位址。

client.ip:使用者端的IP位址。

req.proto: 使用者端所使用的HTTP通訊協定版本資訊,例如HTTP 1.1。

向後端網站伺服器要求時的變數

向後端網站伺服器要求時的變數,包括以下幾種:

beresp.request: 表示所使用的HTTP方法(Method),例如GET或POST等。

beresp.url: 這是表示所要請求的要求網址(URL)。

beresp.proto: 表示所使用的HTTP通訊協定版本資訊,如HTTP 1.1。

beresp.ttl: 表示快取空間的生存週期,表示快取空間的資料能夠保留的時間(單位為秒)。

回覆給使用者後可使用的變數

回覆給使用者後可使用的變數,包括:

resp.status: 表示回覆給使用者的HTTP狀態碼,例如404。

resp.proto: 這個變數是表示所使用的HTTP通訊協定版本資訊,例如HTTP 1.1。

圖2所示為一個簡單的VCL設定,其中的host就是實際服務的網站伺服器的IP位址。


▲圖2 VCL設定範例。

以快取空間來增進網站存取效率的實作

本次實作所使用的架構圖,將如圖3所示一般。


▲圖3 實作架構圖。

先設定varnish.conf組態檔,設定如圖4所示,僅設定後端服務的網站伺服器。


▲圖4 varnish.conf組態檔設定內容。

緊接著,執行下列指令來啟動Varnish伺服器:

#以/usr/local/varnish/data/的目錄
當成快取空間
varnishd  -f varnish.vcl  -a
[Varnish伺服器IP]:80  -n  /usr/
local/varnish/data/

成功啟動後,Varnish便會常駐於系統中來等候要求,此時可以利用「netstat -anpt | grep varn」指令來檢查是否啟動成功,如圖5所示。


▲圖5 檢查是否啟動成功。

限載某個來源IP的連線

也可利用Varnish伺服器來設定限制存取的條件,在此以限制某個來源IP的連線為例,設定當「來源IP」想要連線時,就回覆HTTP狀態碼為403(即表示限制該IP的存取)來阻擋該IP的連線,如圖6所示。


▲圖6 限制某個來源IP進行連線。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!