一個高效能的網站伺服器,是每個網站管理者所迫切希望的,因此本文將簡介開源社群中頗富盛名的反向代理伺服器(Reverse Proxy)軟體Varnish(https://varnish-cache.org/),可利用其提供的快取(Cache)功能來加快網頁存取效率,進而提升網站伺服器的服務效能。
在一般情況下,想要增進網站伺服器的存取效能,不外乎增加伺服器的硬體設施,或是加大所使用的網路頻寬。或者,透過儘量減少傳輸資料量的方式,也可以達到增進效能的目的。
因此,HTTP通訊協定也支援了壓縮功能,當網站伺服器在回覆(Response)資訊給使用者時,會先壓縮相關資訊來減少傳輸的資料量。之後,再由接收端來解壓縮此資訊以取得原來的資料。
除此之外,還可利用使用者的要求(Request)可能有重複的情況之下(例如使用者瀏覽網站上的靜態網頁),先將所讀取過的資訊置於一個快取空間中,一旦使用者發出要求,即可先行在此快取空間中尋取是否有符合的資訊,如果有符合(Hit)即直接回覆給使用者,藉此增進網站伺服器的存取效能,而代理(Proxy)伺服器即是採用此種模式。
簡介代理伺服器
代理伺服器是一種介於使用者與真實的網路服務之間的中介服務。由於代理伺服器會先暫存使用者要求過的資訊至本身伺服器上的快取空間。當使用者對網站伺服器發出要求時,即可先行搜尋此快取空間。確認是否有符合的資訊,一旦符合,即無須再至實際的網站服務伺服器上取得資訊,所以可有效提升讀取的效率,而這也是代理伺服器最主要的功能。
代理伺服器依照型式區分可分為正向代理伺服器(Forward Proxy)與反向代理伺服器(Reverse Proxy),分別簡述如下:
正向代理伺服器
使用者設定瀏覽器中的代理伺服器設定,即可利用該代理伺服器至真正的網站伺服器上取得相關資料,而不必真的直接連接該網站伺服器。如果所需要的資訊已被下載到該代理伺服器內,即可不必實際連接該網站伺服器而能有效地節省時間。
使用正向代理伺服器的另外一個好處是「越界」,當透過正向代理伺服器對外連線時,對於外界而言,使用者的IP就是該正向伺服器IP位址,所以當某些網站有限定允許連接的國別時(如僅限定美國境內的IP可連接),即可利用位於美國的正向代理伺服器進行連接。
反向代理伺服器
相對於正向代理伺服器是由使用者端對正向代理伺服器提出要求,再由正向代理伺服器向實際伺服器要求資訊,然後回覆給使用者的方式。反向代理伺服器則是將實際的網站伺服器隱藏在反向代理伺服器的背後。對於外界使用者而言,他們僅能接觸到反向代理伺服器,而如果外界使用者欲瀏覽網站內容,則須由反向代理伺服器向背後服務的網站伺服器提出要求,再將結果回覆給外界的使用者。
此種架構可將提供服務的網站伺服器與外界網路實體區隔,可避免網站伺服器直接面對第一線的風險。另一個好處則是,可利用反向代理伺服器空間來暫存使用者要求過的資訊,如此也可達到增進網站存取效率的目的。在本文中,便是利用Varnish來實作反向代理伺服器,並利用快取空間來增進網站存取的效能。
什麼是Varnish
Varnish是一種小巧的反向代理伺服器軟體。除了可利用快取的技術來增進網站存取的效率之外,也能夠使用反向代理伺的功能來達到某些的限制功能(就如同著名的Squid軟體),其主要的特點如下所述:
1. 利用記憶體的方式來存取,其檔案存取效能較為優異,但要特別注意的是,一旦系統關機或重新啟動後,相關資訊就會消失。
2. 提供了VCL(Varnish Configuration Language)語言供使用者設定,在使用上更為便利。還利用處理狀態流程的方式來表示處理的各個階段,並讓使用者方便於各個流程下設定規則。
中標安裝Varnish
首先來安裝Varnish,連結至官方網站下載最新的原始碼程式(在此使用的版本為6.0.0)。利用下列指令即可進行安裝(其中#為註解):