使用Varnish加速Webhtml
1.1 問題web
經過配置Varnish緩存服務器,實現以下目標:正則表達式
使用Varnish加速後端Apache Web服務vim
使用varnishadm命令管理緩存頁面後端
使用varnishstat命令查看Varnish狀態瀏覽器
1.2 方案緩存
經過源碼編譯安裝Varnish緩存服務器服務器
編譯安裝Varnish軟件session
複製啓動腳本與配置文件curl
修改配置文件,緩存代理源Web服務器,實現Web加速功能
使用3臺RHEL7虛擬機,其中一臺做爲Web服務器(192.168.2.100)、一臺做爲Varnish代理服務器(192.168.4.5,192.168.2.5),另一臺做爲測試用的Linux客戶機(192.168.2.100)對於Web服務器的部署,此實驗中僅須要安裝httpd軟件、啓動服務,並生成測試首頁文件便可,默認httpd網站根路徑爲/var/www/html,首頁文檔名稱爲index.html
1.3 步驟
實現此案例須要按照以下步驟進行。
步驟一:構建Web服務器
1)使用yum安裝web軟件包
[root@web ~]# yum -y install httpd
2)啓用httpd服務,並設爲開機自動運行
[root@web ~]# systemctl start httpd ; systemctl enable httpd
httpd服務默認經過TCP 80端口監聽客戶端請求:
[root@web ~]# netstat -anptu | grep httpd
tcp 0 0 :::80 :::* LISTEN 2813/httpd
3)爲Web訪問創建測試文件
在網站根目錄/var/www/html下建立一個名爲index.html的首頁文件
[root@web ~]# echo "這是Varnish的測試頁面..A.." > /var/www/html/index.html
步驟二:部署Varnish緩存服務器
1)編譯安裝軟件
[root@Proxy ~]# yum -y install gcc readline-devel pcre-devel //安裝軟件依賴包
[root@Proxy ~]# useradd -s /sbin/nologin varnish //建立帳戶
[root@Proxy ~]# tar -xzf varnish-3.0.6.tar.gz
[root@Proxy ~]# cd varnish-3.0.6
[root@Proxy varnish-3.0.6]# ./configure --prefix=/usr/local/varnish
[root@Proxy varnish-3.0.6]# make && make install
2)複製啓動腳本及配置文件
[root@Proxy varnish-3.0.6]# cp redhat/varnish.initrc /etc/init.d/varnish
[root@Proxy varnish-3.0.6]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
[root@Proxy varnish-3.0.6]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
[root@Proxy varnish-3.0.6]# ln -s /usr/local/varnish/bin/* /usr/bin/
3)修改Varnish文件
[root@Proxy ~]# vim /etc/sysconfig/varnish
66行:VARNISH_LISTEN_PORT=80 #默認端口
89行:VARNISH_STORAGE_SIZE=60M #定義緩存大小
92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" #基於內存方式緩存
4)修改代理配置文件
[root@Proxy ~]# mkdir /etc/varnish
[root@Proxy ~]# cp /usr/local/varnish/etc/default.vcl /etc/varnish/
[root@Proxy~]# uuidgen > /etc/varnish/secret
[root@Proxy ~]# vim /etc/varnish/default.vcl
backend default {
.host = "192.168.2.100"; //改爲口端服務器的IP
.port = "80"; //改稱80端口
}
[root@Proxy varnish-3.0.6]# /etc/init.d/varnish
Usage: /etc/init.d/varnish {start|stop|status|restart|condrestart|try-restart|reload|force-reload} //是一個自帶的腳本,啓服務..等用這個腳本就能夠啦
步驟三:客戶端測試
1)客戶端開啓瀏覽器訪問
[root@client ~]# curl http://192.168.4.5
步驟四:相關技術點
1)查看varnish日誌
[root@Proxy ~]# varnishlog //varnish日誌
[root@Proxy ~]# varnishncsa //訪問日誌
2)更新緩存數據,在後臺web服務器更新頁面內容後,用戶訪問代理服務器看到的仍是以前的數據,說明緩存中的數據過時了須要更新(默認也會自動更新,但非實時更新)。
[root@Proxy ~]# varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082
會進到一個這樣的頁面
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.10.0-327.el7.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
varnish-3.0.6 revision 1899836
Type 'help' for command list.
Type 'quit' to close CLI session.
varnish> ban.url 頁面文件名
ban.url 頁面文件名
//清空緩存數據,支持正則表達式