squid介紹 官網地址:http://www.squid-cache.org/ Squid cache(簡稱為 Squid)是一個流行的自由軟體(GNU 通用公共許可證)的代理伺服器和 Web 緩存伺服器。Squid 有廣泛的用途,從作為網頁伺服器的前置 cache 伺服器緩存相關請求來提高 We ...
squid介紹
官網地址:http://www.squid-cache.org/
Squid cache(簡稱為 Squid)是一個流行的自由軟體(GNU 通用公共許可證)的代理伺服器和 Web 緩存伺服器。Squid 有廣泛的用途,從作為網頁伺服器的前置 cache 伺服器緩存相關請求來提高 Web 伺服器的速度,到為一組人共用網路資源而緩存萬維網,功能變數名稱系統和其他網路搜索,到通過過濾流量幫助網路安全,到區域網通過代理上網。Squid 主要設計用於在 Unix 一類系統運行。
Squid 的發展歷史相當悠久,功能也相當完善。除了 HTTP 外,對於 FTP 與 HTTPS 的支援也相當好,在 3.0 測試版中也支援了 IPv6。
Squid主要提供緩存加速、應用層過濾控制的功能。
代理的工作機制
(1)代替客戶機向網站請求數據,從而可以隱藏用戶的真實IP地址。
(2)將獲得的網頁數據(靜態 Web 元素)保存到緩存中併發送給客戶機,以便下次請求相同的數據時快速響應。
代理伺服器的概念及其作用
代理伺服器是一個位於客戶端和原始(資源)伺服器之間的伺服器,為了從原始伺服器取得內容,客戶端向代理伺服器發送一個請求並指定目標原始伺服器,然後代理伺服器向原始伺服器轉交請求並將獲得的內容返回給客戶端。
緩存代理對於Web至關重要,尤其對於大型高負載Web站點。緩存可作為性能優化的一個重要手段,可以極大減輕後端伺服器的負載。通常對於靜態資源,即較少經常更新的資源,如圖片,css或js等進行緩存,從而在每次刷新瀏覽器的時候,不用重新請求,而是從緩存裡面讀取,這樣就可以減輕伺服器的壓力。
主要作用
(1)資源獲取:代替客戶端實現從原始伺服器的資源獲取
(2)加速訪問:代理伺服器可能離原始伺服器更近,從而起到一定的加速作用
(3)緩存作用:代理伺服器保存從原始伺服器所獲取的資源,從而實現客戶端快速的獲取
(4)隱藏真實地址:代理伺服器代替客戶端去獲取原始伺服器資源,從而隱藏客戶端真實信息
squid的三種代理類型
squid軟體主要有三種代理類型:
- 正向代理:代理內部主機上網,共用上網,緩存,控制內網用戶上網行為等功能(客戶端需要設置代理伺服器的IP和代理埠)。
- 透明代理:客戶機不需指定代理伺服器的地址和埠,而是通過預設路由、防火牆策略將Web訪問重定向給代理伺服器處理。
- 反向代理:如果 Squid 反向代理伺服器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;否則反向代理伺服器將向後臺的 WEB 伺服器請求資源,然後將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。
正向代理分析圖:
反向代理分析圖:
squid安裝和配置文件說明
安裝軟體
# yum鏡像倉庫里有squid的軟體包
yum -y install squid
# squid配置初始化
cat >> /etc/squid/squid.conf<< EOF
cache_mem 64 MB
maximum_object_size 4 MB
maximum_object_size_in_memory 4096 KB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
EOF
# squid初始化
squid -z
# 啟動squid並設置為開機啟動
service squid start && systemctl enable squid
# 檢查squid是否正常運行
netstat -ntlp | grep squid
# 如果防火牆開啟的話,放開3128埠
firewall-cmd --zone=public --add-service=squid --permanent
軟體的文件列表
/etc/squid/squid.conf # 配置文件
/etc/rc.d/init.d/squid # 啟動腳本
/usr/sbin/squid # 二進位命令
/usr/share/doc/squid-3.1.10 # 手冊
/var/log/squid # 日誌目錄
/var/spool/squid # 緩存目錄
配置文件說明
# cat /etc/squid/squid.conf
##### 設置監聽的IP與埠號
http_port 3128
##### 額外提供給squid使用的記憶體大小,預設256 MB
cache_mem 64 MB
##### 設置squid磁碟緩存最大文件,超過4M的文件不保存到硬碟
maximum_object_size 4 MB
##### 設置squid磁碟緩存最小文件
minimum_object_size 0 KB
##### 設置squid記憶體緩存最大文件,超過4M的文件不保存到記憶體
maximum_object_size_in_memory 4096 KB
##### 定義squid的cache存放路徑 、cache目錄容量(單位M)、一級緩存目錄數量、二級緩存目錄數量,此處的100 一定要大於 cache_mem 否則報錯。
cache_dir ufs /var/spool/squid 100 16 256
##### log文件日誌格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
##### log文件存放路徑和日誌格式
access_log /var/log/squid/access.log combined
##### 設置緩存日誌
cache_log /var/log/squid/cache.log
##### log輪轉60天
logfile_rotate 60
##### cache目錄使用量大於95%時,開始清理舊的cache
cache_swap_high 95
##### cache目錄清理到90%時停止
cache_swap_low 90
##### 定義本地網段
acl localnet src 192.168.1.0/24
##### 允許本地網段使用
http_access allow localnet
##### 拒絕所有
http_access deny all
##### 主機名
visible_hostname xxx.xxxx.xxxx
##### 管理員郵箱
cache_mgr [email protected]
正向代理客戶端配置
Windows客戶端配置代理:
Internet 選項 > 連接 > 區域網設置 ”,在代理伺服器區域,按照以下格式設置:
Linux客戶端:
先創建並修改/etc/profile.d/proxy.sh文件
# 創建proxy.sh文件
touch /etc/profile.d/proxy.sh
編輯proxy.sh文件
# 進入profile.d目錄
cd /etc/profile.d/
# 編輯proxy.sh文件
vim proxy.sh
添加下列內容
# squid正向代理只支持http、https、ftp協議,把下麵的proxy_server_ip更換為自己搭建的squid伺服器IP
export https_proxy=http://proxy_server_ip:3128
export http_proxy=http://proxy_server_ip:3128
export ftp_proxy=http://proxy_server_ip:3128
執行source /etc/profile使其生效
# 執行source /etc/profile
source /etc/profile
配置完成