Linux Operation學習------Squid/Varnish
1.1Squid服務器
反向代理工作機制:代替公網用戶訪問組織內部的web服務器
部署基於地區的CDN服務器
軟件包:squid
系統服務:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默認監聽端口:TCP 3128
默認訪問日誌:/var/log/squid/access.log
proxy : 代理
1.2部署步驟
後臺真正的服務器(web1)
1)yum -y install httpd
systemctl start httpd systemctl enable httpd
2)在/var/www/http寫頁面
部署squid代理服務器(proxy)
2)vim /etc/squid/squid.conf
http_port 80 vhost #設置訪問的web說明是代理服務器
visible_hostname svr5.tarena.com #設置主機名,默認沒有該語句 visible(可見的)
cache_peer 192.168.2.100 parent 80 0 originserver
#定義後端真實服務器信息 origin起源
cache_dir ufs /var/spool/squid 200 16 256
#硬盤緩存,緩存容量為200M,自動創建16個一級子目錄和256個二級子目錄
3)啟動squid服務
systemctl start squid systemctl enable squid
4)客戶端測試
crul http://192.168.4.5(代理服務器) #顯示後臺真正服務器的頁面
[root@Client ~]# curl -I http://192.168.4.5 #查看頭部信息
HTTP/1.1 200 OK
Last-Modified: Wed, 03 Jan 2018 02:55:21 GMT
Accept-Ranges: bytes
Content-Length: 14
Date: Wed, 03 Jan 2018 03:54:50 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) #服務端使用的服務
ETag: "e-561d6589eaaf0"
Age: 0
X-Cache: HIT from Proxy #hit 表明緩存給的頁面 miss表示不是緩存
X-Cache-Lookup: HIT from Proxy:80
Via: 1.1 Proxy (squid/3.3.8)
Connection: keep-alive
2、Varnish
緩存在內存或者硬盤(squid在硬盤)
2.1構建Web服務器
使用yum安裝web軟件包(httpd)
啟用httpd服務,並設為開機自動運行
2.2部署Varnish緩存服務器
⑴編譯安裝軟件
[root@svr5 ~]# yum -y install gcc readline-devel pcre-devel gcc-c++ //安裝軟件依賴包
[root@svr5 ~]# useradd -s /sbin/nologin varnish //創建賬戶
[root@svr5 ~]# tar -xzf varnish-3.0.6.tar.gz
[root@svr5 ~]# cd varnish-3.0.6
[root@svr5 varnish-3.0.6]# ./configure --prefix=/usr/local/varnish
[root@svr5 varnish-3.0.6]# make && make install
⑵復制啟動腳本及配置文件
[root@svr5 varnish-3.0.6]# cp redhat/varnish.initrc /etc/init.d/varnish
[root@svr5 varnish-3.0.6]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
[root@svr5 varnish-3.0.6]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
[root@svr5 varnish-3.0.6]# ln -s /usr/local/varnish/bin/* /usr/bin/
⑶修改Varnish文件
vim /etc/sysconfig/varnish #前端配置
vim /etc/varnish/default.vcl #後端配置
[root@svr5 ~]# vim /etc/sysconfig/varnish
66行:VARNISH_LISTEN_PORT=80 #默認端口
89行:VARNISH_STORAGE_SIZE=64M #定義緩存大小
92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" #基於內存方式緩存
(4)修改代理配置文件
[root@svr5 ~]# mkdir /etc/varnish
[root@svr5 ~]# cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
[root@svr5 ~]# uuidgen > /etc/varnish/secret
[root@svr5 ~]# vim /etc/varnish/default.vcl
backend default {
.host = "192.168.2.100";
.port = "80";
}
程序【硬盤】 program
進程【內存】 process
線程【進程下多個線程】thread
2.3客戶端測試
service varnish start
curl http://192.168.4.5
/etc/init.d/varnish start
2.4其他操作
⑴查看varnish日誌
[root@svr5 ~]# varnishlog #varnish日誌 ping自己的後臺
[root@svr5 ~]# /usr/local/varnish/bin/varnishlog #沒有做鏈接文件的操作
[root@svr5 ~]# varnishncsa #訪問日誌 客戶端訪問才有反應
[root@server01 ~]# /usr/local/varnish/bin/varnishcsa
[root@server01 ~]# /usr/local/varnish/bin/varnishadm stop #停止服務
[root@server01 ~]# /usr/local/varnish/bin/varnishadm start #啟動服務
[root@server01 ~]# /usr/local/varnish/bin/varnishadm status #查看狀態
[root@server01 ~]# /usr/local/varnish/bin/varnishadm ban.url / #清空緩存
⑵更新緩存數據,在後臺web服務器更新頁面內容後,用戶訪問代理服務器看到的還是之前的數據,說明緩存中的數據過期了需要更新(默認也會自動更新,但非實時更新)
[root@svr5 ~]# varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 ban.url 頁面文件名(/根)
#清空緩存數據,支持正則表達式(非交互)
緩存過期:
1)自己更新
2)手動更新(在/etc/sysconfig/varnish查看端口以及安全文件)(交互)
varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 #進入
backend.list #查看後端的信息
ban.url .* #所有更新
⑶varnish狀態
varnishstat
Client connections accepted #表示客戶端成功發送連接總數量
Client requests received #客戶端發送http請求的總數
Cache hits #命中緩存的次數
Cache misses #緩存非命中的個數
netstat -anptu | grep 80
Linux Operation學習------Squid/Varnish