一. 代理服務器的了解
1.代理服務器
代理服務器英文全稱是Proxy Server,其功能就是代理網絡用戶去取得網絡信息。 Squid是一個緩
存Internet 數據的軟件,其接收用戶的下載申請,並自動處理所下載的數據。當一個用戶想要下載一
個主頁時,可以向Squid 發出一個申請,要Squid 代替其進行下載,然后Squid 連接所申請網站並請
求該主頁,接着把該主頁傳給用戶同時保留一個備份,當別的用戶申請同樣的頁面時,Squid 把保存
的備份立即傳給用戶,使用戶覺得速度相當快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等
協議並且Squid 可以自動地進行處理,可以根據自己的需要設置Squid,使之過濾掉不想要的東西。
2. Squid 分類
按照代理類型的不同,可以將Squid 代理分為正向代理和反向代理,正向代理中,根據實現方式
的不同,又可以分為普通代理和透明代理。
普通代理:需要客戶機在瀏覽器中指定代理服務器的地址、端口;
透明代理:適用於企業的網關主機(共享接入Internet)中,客戶機不需要指定代理服務器地址、
端口等信息,代理服務器需要設置防火牆策略將客戶機的Web訪問數據轉交給代理服務程序
處理;
反向代理:是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務
器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器
對外就表現為一個服務器。
二.代理服務的配置(必須使代理服務器連上網)
1.正向代理
所謂正向代理模式,是指讓用戶通過Squid服務程序獲取網站頁面等資源,以及基於訪問控制列表
(ACL)功能對用戶訪問網站行為進行限制,在具體的服務方式上又分為標准代理模式與透明代理模
式。標准正向代理模式是把網站數據緩存到服務器本地,提高數據資源被再次訪問時的效率,但是
用戶在上網時必須在瀏覽器等軟件中填寫代理服務器的IP地址與端口號信息,否則默認不使用代理
服務。而透明正向代理模式的作用與標准正向代理模式基本相同,區別是用戶不需要手動指定代理
服務器的IP地址與端口號,所以這種代理服務對於用戶來講是相對透明的。
局域網內的主機如果想要訪問外網,則必須要通過Squid服務器提供的代理才行,這樣當Squid
服務器接收到用戶的指令后會向外部發出請求,然后將接收到的數據交還給發出指令的那個用戶,
從而實現了用戶的代理上網需求。
使真機充當路由器
[root@foundation78 ~]# firewall-cmd --list-all
FirewallD is not running
[root@foundation78 ~]# systemctl stop libvirtd.service
[root@foundation78 ~]# systemctl start firewalld
[root@foundation78 ~]# systemctl start libvirtd.service
[root@foundation78 ~]# firewall-cmd --add-masquerade # 打開路由功能
success
使代理服務器上網
[root@squid ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 添加網關和DNS
DNS1=114.114.114.114
GATEWAY=172.25.254.78
[root@squid ~]# systemctl restart network
[root@squid ~]# route -n
[root@squid ~]# ping www.baidu.com
[root@squid ~]# yum install -y squid.x86_64
[root@squid ~]# vim /etc/squid/squid.conf
56 http_access allow all
59 http_port 3128
62 cache_dir ufs /var/spool/squid 100 16 256
ufs # 緩存數據的存儲格式
/var/spool/squid # squid的cache存放路徑
100 # cache目錄容量(單位M)
16 # 一級緩存目錄數量,默認是16
256 # 二級緩存目錄數量,默認是256
[root@squid ~]# systemctl restart squid.service
[root@squid ~]# systemctl stop firewalld
打開客戶端瀏覽器進行代理設置
[root@apache-server upload]# firefox & # 用命令的方式打開瀏覽器
測試:在網頁上可以成功訪問baidu,是因為有172.25.254.242這台主機做代理
但是在客戶端主機上並不能ping通baidu,因為只在瀏覽器上做了代理
[root@apache-server upload]# ping www.baidu.com
ping: unknown host www.baidu.com
2.反向代理 (也稱cdn加速)
反向代理模式是指讓多台節點主機反向緩存網站數據,從而加快用戶訪問速度。因為一般來講,
網站中會普遍加載大量的文字、圖片等靜態資源,而且它們相對來說都是比較穩定的數據信息,當
用戶發起網站頁面中這些靜態資源的訪問請求時,我們可以使用Squid服務程序提供的反向代理模式
來進行響應。而且,如果反向代理服務器中恰巧已經有了用戶要訪問的靜態資源,則直接將緩存的
這些靜態資源發送給用戶,這不僅可以加快用戶的網站訪問速度,還在一定程度上降低了網站服務器
的負載壓力。
反向代理服務器會將緩存好的靜態資源更快地交付給外網用戶,從而加快了網站頁面被用戶訪問
的速度。並且由於網站頁面數據中的靜態資源請求已被Squid服務器處理,因此網站服務器負責動態
數據查詢就可以了,也進而降低了服務器機房中網站服務器的負載壓力
[root@squid squid]# pwd
/var/spool/squid
[root@squid squid]# vim /etc/squid/squid.conf
59 http_port 80 vhost vport
vhost # 支持域名和主機名來代理節點
vport # 支持ip和端口來代理節點
60 cache_peer 172.25.254.142 parent 80 0 proxy-only
172.25.254.142 # web服務器的ip
parent # 上下級關系,非平級關系
80 # 代理web服務器的80端口
0 # 沒有使用lcp,表示就一台squid服務器
proxy-only # 只做代理,降低主機負擔
[root@squid squid]# systemctl restart squid.service
打開瀏覽器進行訪問
3.調度器(輪詢調度)
[root@squid squid]# vim /etc/squid/squid.conf
59 http_port 80 vhost vport
60 cache_peer 172.25.254.142 parent 80 0 proxy-only name=web1 round-robin weight=2weight=2 # 權重,權重越大,說明這台proxy服務器越重要
61 cache_peer 172.25.254.134 parent 80 0 proxy-only name=web2 round-robin
round-robin # 輪詢調度算法
name=web2 # 定義一個名字讓后面的參數使用
62 cache_peer_domain web1 web2 www.westos.com # 將 www.westos.com 域名的請求通過 RR 輪詢方式轉發到2個父節點中的一個
[root@squid squid]# systemctl restart squid.service
瀏覽器測試,成功實現輪詢,因為web1的權重為2,所以輪詢時,web1要輪詢2次,才會轉到web2