1. 程式人生 > >架設Squid代理作為WEB快取加速

架設Squid代理作為WEB快取加速

在區域網的路由伺服器中假設Squid代理來統一管理並加速內網機器對外部網路的訪問速度。

下載並安裝Squid

1、從伺服器下載tar包。
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.13-RELEASENOTES.......
2、tar 解壓
3、編譯並安裝

./configure --prefix=/usr/local/squid
./make all
./make install

建立cache\log資料夾並賦予相應許可權

mkdir /usr/local/squid/var/logs
mkdir /usr/local/squid/var
/cache chmod 777 -R /usr/local/squid/var/logs chomd 777 -R /usr/local/squid/var/cache

初始化並啟動

cd /usr/local/squid
# 初始化
./sbin/squid -z
# 啟動
./sbin/squid start

配置檔案相關

配置透明代理

設定透明代理後,內網使用者就不需要在本機指定代理了。

# 將預設的3128埠設定為透明代理,3.x版本後為intercept,而不是transparent
# Squid normally listens to port 3128
http_port 3129
http_port 3128 intercept

之後,在路由中將80埠的請求全部轉發到3129即可。

配置快取

# Uncomment and adjust the following to add a disk cache directory.
cache_mem 128 MB
# 必須保證本路徑真實存在,並賦予相應許可權777
cache_dir ufs /usr/local/squid/var/cache/squid 400 16 256
cache_swap_high 95
cache_swap_low 90

# 快取重新整理策略
# 以下是網路上找的推薦策略
#
# Add any of your own refresh_pattern entries above these.
# refresh_pattern -i .css$ 360 50% 2880 reload-into-ims refresh_pattern -i .js$ 1440 50% 2880 reload-into-ims refresh_pattern -i .html$ 720 50% 1440 reload-into-ims refresh_pattern -i .jpg$ 1440 90% 2880 ignore-reload refresh_pattern -i .gif$ 1440 90% 2880 ignore-reload refresh_pattern -i .swf$ 1440 90% 2880 ignore-reload refresh_pattern -i .jpg$ 1440 50% 2880 ignore-reload refresh_pattern -i .png$ 1440 50% 2880 ignore-reload refresh_pattern -i .bmp$ 1440 50% 2880 ignore-reload refresh_pattern -i .doc$ 1440 50% 2880 ignore-reload refresh_pattern -i .ppt$ 1440 50% 2880 ignore-reload refresh_pattern -i .xls$ 1440 50% 2880 ignore-reload refresh_pattern -i .pdf$ 1440 50% 2880 ignore-reload refresh_pattern -i .rar$ 1440 50% 2880 ignore-reload refresh_pattern -i .zip$ 1440 50% 2880 ignore-reload refresh_pattern -i .txt$ 1440 50% 2880 ignore-reload refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320

快取命中情況驗證

有兩種方法,查日誌以及client監控。* 注意:要清空瀏覽器本地快取並重新整理頁面來驗證代理伺服器的快取效果,否則很多請求會走瀏覽器本地快取 *

日誌查詢

代理的日誌位於/usr/local/squid/var/logs/access.log,通過分組統計狀態碼的數量獲得大致的快取命中情況:
cat /usr/local/squid/var/logs/access.log | gawk '{print $4}'| sort|uniq -c|sort -nr

前後兩次獲取頁面的結果如下:

這裡寫圖片描述

  • TCP_MISS/200 - 為快取未命中,從遠端伺服器下載的請求數量。
  • TCP_REFRESH_UNMODIFIED/304 - 為本地快取數量
  • TCP_MEM_HIT - 為記憶體命中次數

可以看見有20條請求走了快取。

client監控

/usr/local/squid/bin/squidclient -p 3128 mgr:info

這裡寫圖片描述

可以看見Memory hit為記憶體快取命中率,Disk hits 為磁碟快取命中率。分別有5分鐘和60分鐘範圍內的資料。