1. 程式人生 > >Squid服務器,Varnish服務器

Squid服務器,Varnish服務器

文件 varnish日誌 頁面 兩個 day 清空 efault server curl

反向代理

1.1 問題

通過配置代理服務器,實現以下目標:

  1. 代理服務器可以將遠程的Web服務器頁面緩存在本地
  2. 代理服務器端口設置為80端口
  3. 用戶通過訪問代理服務器即可獲得遠程Web服務器上的頁面內容
  4. 遠程Web服務器對客戶端用戶是透明的
  5. 利用緩存機制提高網站的響應速度

1.2 方案

使用3臺RHEL7虛擬機,其中一臺作為Squid代理服務器,該服務器用來連接兩個網段,因此需要配置兩塊網卡,地址分別為 192.168.4.5和192.168.2.5。一臺作為客戶端測試主機,IP地址為192.168.4.100。一臺Web服務器,地址為 192.168.2.100,該Web服務器為其他代理提供Web數據源。

實驗環境所需要的主機及對應的IP設置列表如表-1所示。

表-1 主機列表

技術分享圖片

實驗拓撲如圖-1所示。

技術分享圖片

圖-1

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:構建web服務器

1)使用yum安裝web軟件包

  1. [root@web ~]# yum -y install httpd
  2. .. ..
  3. [root@web ~]# rpm -q httpd
  4. httpd-2.4.6-40.el7.x86_64

2)啟用httpd服務,並設為開機自動運行

  1. [root@web ~]# systemctl start httpd ; systemctl enable httpd

httpd服務默認通過TCP 80端口監聽客戶端請求:

  1. [root@web ~]# netstat -anptu | grep httpd
  2. tcp 0 0 :::80 :::* LISTEN 2813/httpd

3)為Web訪問建立測試文件

在網站根目錄/var/www/html下創建一個名為index.html的首頁文件:

  1. [root@web ~]# cat /var/www/html/index.html
  2. <html>
  3. <title>Welcome</title>
  4. <body>
  5. <h1>192.168.2.100</h1>
  6. </body>
  7. </html>

步驟二:部署Squid代理服務器

1)使用yum安裝squid軟件包:

  1. [root@svr5 ~]# yum -y install squid
  2. .. ..

2)修改/etc/squid/squid.conf配置文件:

  1. [root@svr5 ~]# vim /etc/squid/squid.conf
  2. .. ..
  3. http_port 80 vhost //設置反向代理
  4. visible_hostname svr5.tarena.com //設置主機名,默認沒有該語句
  5. cache_peer 192.168.2.100 parent 80 0 originserver //定義後端真實服務器信息
  6. cache_dir ufs /var/spool/squid 200 16 256 //硬盤緩存,緩存容量為200M,自動創建16個一級子目錄和256個二級子目錄
  7. http_access allow all //允許本機所有主機使用代理服務器

3)啟動squid服務,並設置為開機啟動:

  1. [root@svr5 ~]# systemctl start squid; systemctl enable squid

4)squid服務通過TCP 80端口監聽客戶端請求:

  1. [root@svr5 ~]# netstat -anptu | grep 80
  2. tcp 0 0 :::80 :::* LISTEN 3213/(squid)

步驟三:客戶端測試

2)客戶端開啟瀏覽器訪問

  1. [root@client ~]# curl http://192.168.4.5 //返回的是2.100服務的頁面

2 案例2:使用Varnish加速Web

2.1 問題

通過配置Varnish緩存服務器,實現如下目標:

  • 使用Varnish加速後端Apache Web服務
  • 使用varnishadm命令管理緩存頁面
  • 使用varnishstat命令查看Varnish狀態

2.2 方案

通過源碼編譯安裝Varnish緩存服務器

  • 編譯安裝Varnish軟件
  • 復制啟動腳本與配置文件

修改配置文件,緩存代理源Web服務器,實現Web加速功能

使用3臺RHEL7虛擬機,其中一臺作為Web服務器(192.168.2.100)、一臺作為Varnish代理服務器(192.168.4.5,192.168.2.5),另外一臺作為測試用的Linux客戶機(192.168.2.100),如圖-2所示。

技術分享圖片

圖-2

對於Web服務器的部署,此實驗中僅需要安裝httpd軟件、啟動服務,並生成測試首頁文件即可,默認httpd網站根路徑為/var/www/html,首頁文檔名稱為index.html。

2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:構建Web服務器

1)使用yum安裝web軟件包

  1. [root@web1 ~]# yum -y install httpd

2)啟用httpd服務,並設為開機自動運行

  1. [root@web1 ~]# systemctl start httpd ; systemctl enable httpd

httpd服務默認通過TCP 80端口監聽客戶端請求:

  1. [root@pc205 ~]# netstat -anptu | grep httpd
  2. tcp 0 0 :::80 :::* LISTEN 2813/httpd

3)為Web訪問建立測試文件

在網站根目錄/var/www/html下創建一個名為index.html的首頁文件:

  1. [root@pc205 ~]# cat /var/www/html/index.html
  2. <html>
  3. <title>Welcome</title>
  4. <body>
  5. <h1>192.168.2.100</h1>
  6. </body>
  7. </html>

步驟二:部署Varnish緩存服務器

1)編譯安裝軟件

  1. [root@svr5 ~]# yum -y install gcc readline-devel pcre-devel //安裝軟件依賴包
  2. [root@svr5 ~]# useradd -s /sbin/nologin varnish //創建賬戶
  3. [root@svr5 ~]# tar -xzf varnish-3.0.6.tar.gz
  4. [root@svr5 ~]# cd varnish-3.0.6
  5. [root@svr5 varnish-3.0.6]# ./configure --prefix=/usr/local/varnish
  6. [root@svr5 varnish-3.0.6]# make && make install

2)復制啟動腳本及配置文件

  1. [root@svr5 varnish-3.0.6]# cp redhat/varnish.initrc /etc/init.d/varnish
  2. [root@svr5 varnish-3.0.6]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
  3. [root@svr5 varnish-3.0.6]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
  4. [root@svr5 varnish-3.0.6]# ln -s /usr/local/varnish/bin/* /usr/bin/

3)修改Varnish文件

  1. [root@svr5 ~]# vim /etc/sysconfig/varnish
  2. 66行:VARNISH_LISTEN_PORT=80 #默認端口
  3. 89行:VARNISH_STORAGE_SIZE=64M #定義緩存大小
  4. 92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" #基於內存方式緩存

4)修改代理配置文件

  1. [root@svr5 ~]# mkdir /etc/varnish
  2. [root@svr5 ~]# cp /usr/local/varnish/etc/default.vcl /etc/varnish/
  3. [root@svr5 ~]# uuidgen > /etc/varnish/secret
  4. [root@svr5 ~]# vim /etc/varnish/default.vcl
  5. backend default {
  6. .host = "192.168.2.100";
  7. .port = "80";
  8. }
  9. [root@svr5 ~]# service varnish start

步驟三:客戶端測試

1)客戶端開啟瀏覽器訪問

  1. [root@client ~]# curl http://192.168.4.5

步驟四:其他操作

1)查看varnish日誌

  1. [root@svr5 ~]# varnishlog //varnish日誌
  2. [root@svr5 ~]# varnishncsa //訪問日誌

2)更新緩存數據,在後臺web服務器更新頁面內容後,用戶訪問代理服務器看到的還是之前的數據,說明緩存中的數據過期了需要更新(默認也會自動更新,但非實時更新)。

  1. [root@svr5 ~]# varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 ban.url 頁面文件名
  2. //清空緩存數據,支持正則表達式

Squid服務器,Varnish服務器