Squid 介紹
Squid是一個高性能的代理緩存伺服器,Squid支援FTP、gopher、HTTPS和HTTP協定。和一般的代理緩存軟體不同,Squid用一個單獨的、非子產品化的、I/O驅動的程序來處理所有的用戶端請求。使用雲伺服器 ECS 時,經常有這樣的需求: 購買了多台 ECS 主機,但其中隻有一台伺服器購買了公網帶寬, 而其餘 ECS 因為隻有偶爾的公網通路需求,是以沒有購買公網帶寬。可以通過配置 squid 代理,來使沒有購買公網的伺服器通過已購買公網的伺服器通路外網,也可以通過squid作緩存減輕WEB伺服器的壓力,同時避免暴露WEB伺服器真實的IP位址,提高安全性。
Squid 是一個緩存 Internet 資料的軟體,其接收使用者的下載下傳申請,并自動處理所下載下傳的資料。當一個使用者想要下載下傳一個首頁時,可以向 Squid 發出一個申請,要 Squid 代替其進行下載下傳,然後 Squid 連接配接所申請網站并請求該首頁,接着把該首頁傳給使用者同時保留一個備份,當别的使用者申請同樣的頁面時,Squid 把儲存的備份立即傳給使用者。
按照代理類型的不同,可以将 Squid 代理分為正向代理和反向代理,正向代理中,根據實作方式的不同,又可以分為普通代理和透明代理。
普通代理:需要客戶機在浏覽器中指定代理伺服器的位址、端口。
透明代理:适用于企業的網關主機(共享接入 Internet)中,客戶機不需要指定
代理伺服器位址、端口等資訊,代理伺服器需要設定防火牆政策将客戶機的 Web 通路資料轉交給代理服務程式處理。
反向代理:是指以代理伺服器來接受 Internet 上的連接配接請求,然後将請求轉發給内部網絡上的伺服器,并将從伺服器上得到的結果傳回給 Internet 上請求連接配接的用戶端,此時代理伺服器對外就表現為一個伺服器。
Squid 配置說明
作業系統:CentOS Linux release 7.3.1611 (Core)
Squid 版本:squid-3.5.20-10.el7.x86_64
具體配置如下:
配置本地yum源,yum安裝squid:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLmJTZmBjN0ImNmZDM3UjZ4cDOlNmM1czM4MGN3MTOmZWMwETMlZzM28CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
yum install squid –y
安裝完成後開始根據不同的代理需求編輯配置檔案。
普通代理:
原理圖
*圖中的IP位址僅為實驗
1.啟動squid服務
systemctl start squid
2.打開用戶端浏覽器設定代理服務:
注意:此處代理伺服器的IP應該是與用戶端和web伺服器能夠直接通信的IP,測試機的IP不能與WEB伺服器直接通信,否則就是去了代理的意義。
3.用戶端直接通路WEB伺服器,此時可以實作由一台ECS伺服器做squid代理,通路後端沒有公網出口的WEB叢集。
反向代理:
用squid做反向代理增加web伺服器的安全性,同時squid可以作緩存,減輕真正的web伺服器的負擔,提高通路速度。
原理圖:
*圖中IP位址僅作參考
- 編輯squid的配置檔案
Linux 系統通過 Squid 配置實作代理上網Squid normally listens to port 3128
vim /etc/squid/squid.conf
Squid normally listens to port 3128
http_port 80 vhost vport //指定squid代理伺服器的端口為80,vhost和vport指的是采用虛拟主機的方式
cache_dir ufs /var/spool/squid 512 16 256
cache_mem 16 MB
cache_peer 39.108.15.233 parent 80 0 no-query originserver
說明:
cache_dir ufs /var/spool/squid 512 16 256
緩存目錄 存儲方式 緩存目錄 緩存大小為512MB 一級子目錄數 二級子目錄數
指定真正的web伺服器 類型 http端口 不支援查詢鄰居的緩存 允許類型weiparent的伺服器作為原始伺服器被通路
http_access allow all 允許所有的網際網路使用者通路。
2.重新開機squid服務
systemctl restart squid
注意:反向代理代理伺服器需要使用80端口,若服務啟動不起來,請檢視80端口是否被占用。若占用,關閉掉對應服務,再重新啟動squid服務。
3.在用戶端直接輸入代理伺服器的ip,可以通路到真實的WEB伺服器。
透明代理原理:代理伺服器做一個轉發器,設定端口轉發規則,把通路web服務的請求,轉發給web伺服器,實作通路用戶端對WEB伺服器的通路。涉及iptables規則的設定,用途并不廣泛,不在累述。