1. 程式人生 > >Squid(代理快取伺服器)

Squid(代理快取伺服器)

1.插話

Squid是什麼?
     Squid是一種用來緩衝Internet資料的軟體。它是這樣實現其功能的,接受來自人們需要下載的目標(object)的請求並適當地處理這些請求。也就是說,如果一個人想下載一web頁面,他請求Squid為他取得這個頁面。Squid隨之連線到遠端伺服器(比如:http://squid.nlanr.net/)並向這個頁面發出請求。然後,Squid顯式地聚集資料到客戶端機器,而且同時複製一份。當下一次有人需要同一頁面時,Squid可以簡單地從磁碟中讀到它,那樣資料迅即就會傳輸到客戶機上。當前的Squid可以處理HTTP,FTP,GOPHER,SSL和WAIS等協議。但它不能處理如POP
,NNTP,RealAudio以及其它型別的東西。

2.Squid解析介紹

1)分類
正向解析和反向解析
2)相同點
 訪問走向:客戶端 -> 代理伺服器 ->真實伺服器 ->代理伺服器->客戶端
3)不同點:
    正向代理語義上更側重於,客戶端(A)讓代理伺服器(B)去幫忙訪問某個網址。比如騰訓QQ,新聞,體育,時尚等網站。
    其特點是:
a、被訪問的伺服器(C)只知道是代理伺服器(B)請求的,而不知道是你(A)請求的;
b、你(A)可以明確知道你要請求的真實伺服器(C)
c、客戶端(A)必須在瀏覽器設定代理伺服器(B)的地址和埠。(設定之後,意思就是說只要在這個瀏覽器上輸入的網址,統統都丟給代理伺服器(B)去幫忙訪問)

    反向代理:
客戶端(A)只知道代理伺服器(B)的地址,而不知道真實的伺服器(C)的地址。客戶端(A)只能被動的請求代理伺服器(B),在由代理伺服器去訪問真實的伺服器(C)。 其特點是: a、客戶端(A)請求一個地址(比如代理伺服器(B)的地址),它並不知道這個地址是代理伺服器(B)的地址還是真實的地址(C) b、真實的地址(C)是由代理伺服器(B)決定的。假設代理伺服器(B)的地址為www.B.com,它配置的是代理到haha,那你看到的內容就是haha;改天它配置成了hehe,你一樣輸入www.B.com,看到的內容卻是hehe。這些都不是客戶端(A)能決定的。 c、客戶端(A)不需要在瀏覽器設定代理伺服器(B)。
4)總結
    正向代理,其真實伺服器對客戶端是明確的。你只是藉助代理伺服器讓它幫忙去請求你想訪問的那個地址。
    一般的應用場景是:公司內部人員的計算機網路一般是私網,但是,為了公司人員可以訪問到外網,只需要有一臺計算機可以連到外網,那麼,就可以將這臺計算機作為代理伺服器進行正向解析。
    反向代理,其真實伺服器對客戶端是透明的。你永遠不知道代理伺服器訪問的地址是代理伺服器還是真實伺服器。就比如直接訪問www.baidu.com,有可能地方代理伺服器內才能中沒有這個資料,那麼,他就要去真實伺服器去獲取,而他獲取的速度遠遠小於客戶機自己獲取花費的時間,從而在某種意義上實現加速。
    一般的應用場景是:大型公司為了會在全國各地安放代理伺服器,一方面為了緩解總部伺服器的訪問壓力,另一方面進行地方性解析速度更快,會少很多經過路由的過程,並且公司的伺服器的傳輸速度差不多都是幾千兆,我們平時用的網一般也就幾十兆,就不得了了。

3.Squid的實現

1)正向解析

step1:

需要三臺計算機:
【C】:客戶機 
【S】:代理伺服器
【R】:真實伺服器

step2:

配置各臺主機的網路資訊:
【C】:新增一塊網絡卡,設定IP為:172.25.8.208
【S】:新增兩塊網絡卡,設定IP分別為:172.25.8.108172.25.254.108
【R】:新增一塊網絡卡,設定IP為:172.25.254.8
其中,172.25.8.0/24為私有網段,172.25.254.0/24為公有網段

在這裡,我們將自己的主機作為【R】,安裝兩臺虛擬機器分別作為【C】【S】
這裡寫圖片描述
這裡寫圖片描述

step3:

將Squid服務在【S】這臺虛擬機器上進行搭建:
yum install squid -y 

通過檢視squid的配置檔案可知,其開放的網路埠為:3128
vim /etc/squid/squid.conf
這裡寫圖片描述

vim /etc/squid/squid.conf               ##修改配置檔案中56行和66行   

這裡寫圖片描述

systemctl start squid            ##開啟squid服務
cd /var/spool/squid
ls                              
##可以看到生成了很多的目錄,而這些目錄存在的意義就是快取記憶體

這裡寫圖片描述

step4

在客戶端【C】中的瀏覽器上進行代理伺服器的新增:
firefox                  ##進入到瀏覽器中直接編輯修改
##Edit --> Preferences --> Advanced --> Network --> Settings --> Manual proxy configuration
##在Manual proxy configuration中填寫:
HTTP Proxy:172.25.8.108   ##代理伺服器中可以連線公網的IP
Port:3128                 ##代理伺服器網路埠

這裡寫圖片描述

step5

   最後一次檢查防火牆是否關閉,SELinux是否停止工作,squid服務是否開啟
一切準備就緒的情況下,在【R】真實伺服器中,在Apache的預設釋出目錄下,編輯檔案index.html,然後,先在【S】代理伺服器端進行測試,如果,可以正確訪問,再繼續在【C】客戶端進行訪問

【S】端,Apache預設釋出檔案的內容
這裡寫圖片描述
【S】代理伺服器端 訪問【R】真實伺服器的Apache時,顯示為【R】真實伺服器的Apache的預設釋出檔案則正確,即訪問成功!
這裡寫圖片描述
最後,在【C】端直接訪問【R】端的Apache
這裡寫圖片描述

正向解析成功~

1)反向解析

與正向解析不同的是,反向解析訪問的網路埠是80,因此,在正向解析的基礎上,我們需要改變【S】端squid的配置檔案以及【C】端瀏覽器的檔案的http埠
S】端:vim /etc/squid/squid.conf        ##將squid的埠由3128改為80

這裡寫圖片描述

C】端:firefox

這裡寫圖片描述

反向解析成功~