您好,登錄后才能下訂單哦!
這篇文章主要講解了“Linux系統(tǒng)中Squid代理服務(wù)器配置的過程解析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Linux系統(tǒng)中Squid代理服務(wù)器配置的過程解析”吧!
什么是squid?
Squid是一個(gè)緩存internet數(shù)據(jù)的一個(gè)軟件,它接收用戶的下載申請(qǐng),并自動(dòng)處理所下載的數(shù)據(jù)。也就是說,當(dāng)一個(gè)用戶象要下載一個(gè)主頁時(shí),它向Squid發(fā)出一個(gè)申請(qǐng),要Squid替它下載,然后Squid連接所申請(qǐng)網(wǎng)站并請(qǐng)求該主頁,接著把該主頁傳給用戶同時(shí)保留一個(gè)備份,當(dāng)別的用戶申請(qǐng)同樣的頁面時(shí),Squid把保存的備份立即傳給用戶,使用戶覺得速度相當(dāng)快。目前,Squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 協(xié)議.
使用squid的好處:快速響應(yīng),減少網(wǎng)絡(luò)阻塞,增強(qiáng)訪問控制,提高安全性.可以針對(duì)特定的網(wǎng)站,用戶,網(wǎng)絡(luò),數(shù)據(jù)類型實(shí)施訪問控制.
squid有3種代理方式:普通代理模式,透明代理模式,反向代理模式
1.普通代理模式
一個(gè)標(biāo)準(zhǔn)的代理緩沖服務(wù)被用于緩存靜態(tài)的網(wǎng)頁(例如:html文件和圖片文件等)到本地網(wǎng)絡(luò)上的一臺(tái)主機(jī)上(即代理服務(wù)器)。當(dāng)被緩存的頁面被第二次訪問的時(shí)候,瀏覽器將直接從本地代理服務(wù)器那里獲取請(qǐng)求數(shù)據(jù)而不再向原web站點(diǎn)請(qǐng)求數(shù)據(jù)。這樣就節(jié)省了寶貴的網(wǎng)絡(luò)帶寬,而且提高了訪問速度。但是,要想實(shí)現(xiàn)這種方式,必須在每一個(gè)內(nèi)部主機(jī)的瀏覽器上明確指明代理服務(wù)器的IP地址和端口號(hào)??蛻舳松暇W(wǎng)時(shí),每次都把請(qǐng)求送給代理服務(wù)器處理,代理服務(wù)器根據(jù)請(qǐng)求確定是否連接到遠(yuǎn)程web服務(wù)器獲取數(shù)據(jù)。如果在本地緩沖區(qū)有目標(biāo)文件,則直接將文件傳給用戶即可。如果沒有的話則先取回文件,先在本地保存一份緩沖,然后將文件發(fā)給客戶端瀏覽器。
2.透明代理模式
透明代理緩沖服務(wù)和標(biāo)準(zhǔn)代理服務(wù)器的功能完全相同。但是,代理操作對(duì)客戶端的瀏覽器是透明的(即不需指明代理服務(wù)器的IP和端口)。透明代理服務(wù)器阻斷網(wǎng)絡(luò)通信,并且過濾出訪問外部的HTTP(80端口)流量。如果客戶端的請(qǐng)求在本地有緩沖則將緩沖的數(shù)據(jù)直接發(fā)給用戶,如果在本地沒有緩沖則向遠(yuǎn)程web服務(wù)器發(fā)出請(qǐng)求,其余操作和標(biāo)準(zhǔn)的代理服務(wù)器完全相同。對(duì)于Linux操作系統(tǒng)來說,透明代理使用Iptables或者Ipchains實(shí)現(xiàn)。因?yàn)椴恍枰獙?duì)瀏覽器作任何設(shè)置,所以,透明代理對(duì)于ISP(Internet服務(wù)器提供商)特別有用。
3.反向代理模式
反向代理是和前兩種代理完全不同的一種代理服務(wù)。使用它可以降低原始WEB服務(wù)器的負(fù)載,又稱HTTP加速器。反向代理服務(wù)器承擔(dān)了對(duì)原始WEB服務(wù)器的靜態(tài)頁面的請(qǐng)求,它是一種通過在繁忙的WEB服務(wù)器和Internet之間增加一個(gè)高速的WEB緩沖服務(wù)器(即:WEB反向代理服務(wù)器)來降低實(shí)際的WEB服務(wù)器的負(fù)載.Web服務(wù)器加速(反向代理)是針對(duì)Web服務(wù)器提供加速功能的。它作為代理Cache,但并不針對(duì)瀏覽器用戶,而針對(duì)一臺(tái)或多臺(tái)特定Web服務(wù)器。只要將Reverse Proxy Cache設(shè)備放置在一臺(tái)或多臺(tái)Web服務(wù)器前端即可。當(dāng)互聯(lián)網(wǎng)用戶訪問某個(gè)WEB服務(wù)器時(shí),通過DNS服務(wù)器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服務(wù)器的IP地址,這時(shí)Reverse Proxy Server設(shè)備充當(dāng)Web服務(wù)器,瀏覽器可以與它連接,無需再直接與Web服務(wù)器相連。因此,大量Web服務(wù)工作量被卸載到反向代理服務(wù)上。不但能夠防止外部網(wǎng)主機(jī)直接和web服務(wù)器直接通信帶來的安全隱患,而且能夠很大程度上減輕web服務(wù)器的負(fù)擔(dān),提高訪問速度。
以下是squid反向代理實(shí)驗(yàn)
有2臺(tái)服務(wù)器,1臺(tái)HTTP Server 10.1.1.200,端口80,有2個(gè)虛擬機(jī)主機(jī)www.testone.com www.testtwo.com提供服務(wù)
另一臺(tái)Squid Server為反向代理服務(wù)器,10.1.6.200
客戶機(jī)ip:10.1.6.173
測(cè)試: 客戶機(jī)訪問通過Squid Server 訪問HTTP Server. 這里需要在客戶機(jī)上修改/etc/hosts,添加二行10.1.6.200 www.testone.com
10.1.6.200 www.testtwo.com(為了讓客戶機(jī)能夠解析這2個(gè)域名對(duì)應(yīng)ip為10.1.6.200 squid反向代理服務(wù)器的ip,監(jiān)聽端口默認(rèn)是3128)
Squid Server 修改/etc/hosts,添加二行10.1.1.200 www.testone.com
10.1.1.200 www.testtwo.com
安裝squid
代碼如下:
root@10.1.6.200:~# apt-get install squid
配置squid
代碼如下:
root@10.1.6.200:~# vim /etc/squid/squid.conf
http_port 3128 #http_port告訴squid在哪個(gè)端口監(jiān)聽http請(qǐng)求,默認(rèn)3128
http_port 10.1.6.200:80 vhost #這里vhost支持虛擬主機(jī)
cache_dir aufs /opt/squid/cache 200 16 256 #緩存目錄的設(shè)置,語法:<目錄> <MB大小> <dir1> <dir2>
代碼如下:
#定義acl(訪問控制列表),語法為:acl <acl 名稱> <acl類型> <配置的內(nèi)容>
acl all src all
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
代碼如下:
acl Safe_ports port 80
acl purge method PURGE
acl CONNECT method CONNECT
acl manager proto cache_object
代碼如下:
#利用前面定義的acl,定義訪問控制規(guī)則
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access allow all
代碼如下:
cache_mem 200 MB #如果物理內(nèi)存很大,盡量設(shè)置大些
maximum_object_size 20 MB #最大緩存塊
maximum_object_size_in_memory 5 MB #與內(nèi)存保存資料有關(guān)的配置
代碼如下:
#虛擬機(jī)主機(jī)代理配置,如從客戶端訪問www.testone.com,則Squid向www.testone.com的80端口發(fā)送請(qǐng)求.
cache_peer www.testone.com parent 80 0 no-query originserver name=one
cache_peer www.testtwo.com parent 80 0 no-query originserver name=two
cache_peer_domain one www.testone.com
cache_peer_domain two www.testtwo.com
代碼如下:
#設(shè)置squid用戶及用戶組
cache_effective_user proxy
cache_effective_group proxy
代碼如下:
#下面是關(guān)于日志文件
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log none
代碼如下:
mime_table /usr/share/squid/mime.conf
pid_filename /var/log/squid/squid.pid
代碼如下:
coredump_dir /var/spool/squid
設(shè)置緩存目錄權(quán)限為proxy,否則啟動(dòng)會(huì)提示沒有權(quán)限
代碼如下:
root@10.1.6.200:opt# chown -R proxy:proxy squid/
root@10.1.6.200:opt# ll
total 8
drwxr-xr-x 3 proxy proxy 4096 2013-02-21 22:42 squid
在開啟squid服務(wù)之前,先檢查配置文件是否正確:(假如看不輸出,配置文件有效)
root@10.1.6.200:opt# squid -k parse
初始化cache目錄,即建立緩存目錄的存儲(chǔ)格式(在初次運(yùn)行squid之前,或者增加了新的cache_dir,必須初始化cache目錄),cache目錄初始化可能花費(fèi)一些時(shí)間,依賴cache目錄的大小和數(shù)量,要觀察詳細(xì)過程可以加-X選項(xiàng).
代碼如下:
root@10.1.6.200:squid# squid -z
2013/02/22 20:31:10| Creating Swap Directories
啟動(dòng)squid服務(wù)
代碼如下:
root@10.1.6.200:squid# /etc/init.d/squid start
Starting Squid HTTP proxy: squid.
root@10.1.6.200:squid# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:39360 0.0.0.0:* LISTEN 1383/rpc.statd
tcp 0 0 127.0.0.1:833 0.0.0.0:* LISTEN 1929/famd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1372/portmap
tcp 0 0 10.1.6.200:80 0.0.0.0:* LISTEN 2491/(squid)
tcp 0 0 0.0.0.0:22000 0.0.0.0:* LISTEN 1623/sshd
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 2491/(squid)
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1890/exim4
udp 0 0 0.0.0.0:58152 0.0.0.0:* 2491/(squid)
udp 0 0 0.0.0.0:3130 0.0.0.0:* 2491/(squid)
udp 0 0 0.0.0.0:711 0.0.0.0:* 1383/rpc.statd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1372/portmap
udp 0 0 0.0.0.0:59518 0.0.0.0:* 1383/rpc.statd
這里不詳細(xì)講解HTTP Server 10.1.1.200配置虛擬主機(jī)過程,已分別配置好www.testone.com,www.testtwo.com虛擬主機(jī)
查看HTTP Server日志,會(huì)發(fā)現(xiàn)是Squid Server ip 請(qǐng)求數(shù)據(jù).
代碼如下:
root@10.1.1.200:apache2# tail -f www.testone.com_access.log
10.1.6.200 - - [22/Feb/2013:20:47:17 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 734; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
代碼如下:
root@10.1.1.200:apache2# tail -f www.testtwo.com_access.log
10.1.6.200 - - [22/Feb/2013:20:49:07 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 734; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
以下是整個(gè)訪問原理過程:
1.當(dāng)客戶端在瀏覽器輸入:www.testone.com 通過本地/etc/hosts解析,域名www.testone.com對(duì)應(yīng)的ip是10.1.6.200(Squid反向代理服務(wù)器),于是客戶端向Squid反向代理服務(wù)器默認(rèn)3128端口發(fā)送請(qǐng)求,注意:在客戶端輸入www.testone.com和http://10.1.6.200是不一樣的,如果是通過ip請(qǐng)求,則不能實(shí)現(xiàn)讓Squid服務(wù)器對(duì)內(nèi)部網(wǎng)絡(luò)多個(gè)服務(wù)器代理,需要使用域名方式.在 配置 Squid 時(shí),有兩個(gè)選項(xiàng),cache_peer 和 cache_peer_domain,這兩個(gè)配置項(xiàng)讓 Squid 有能力知道www.testone.com這個(gè)請(qǐng)求最終是想訪問HTTP服務(wù)器10.1.1.200的80端口,從而實(shí)現(xiàn)了 Squid 對(duì)內(nèi)部多個(gè)服務(wù)器作代理的功能需求。
2.Squid服務(wù)器收到客戶端發(fā)來的請(qǐng)求,一看是www.testone.com,從配置它知道請(qǐng)求HTTP服務(wù)器10.1.1.200的80端口.
3.HTTP服務(wù)器提供服務(wù)監(jiān)聽80端口,收到Squid發(fā)送來的請(qǐng)求,于是根據(jù)請(qǐng)求發(fā)送相應(yīng)數(shù)據(jù)給Squid服務(wù)器.
4.Squid收到HTTP服務(wù)器從80端口發(fā)送過來的數(shù)據(jù)后,會(huì)將該數(shù)據(jù)在本地緩存,同時(shí)將數(shù)據(jù)從自己的3128發(fā)送給客戶端10.1.6.173.
感謝各位的閱讀,以上就是“Linux系統(tǒng)中Squid代理服務(wù)器配置的過程解析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Linux系統(tǒng)中Squid代理服務(wù)器配置的過程解析這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。