配置Squid服务
Squid大多用作http服務(wù)的緩存服務(wù)器,緩存圖片等靜態(tài)文件可以加速客戶端的請(qǐng)求返回速度。
Squid不僅可以做正向代理,又可以做反向代理。當(dāng)作為正向代理時(shí),Squid后面是客戶端,客戶端想上網(wǎng)不管什么網(wǎng)都得經(jīng)過Squid. 當(dāng)一個(gè)用戶(客戶端)想要請(qǐng)求一個(gè)主頁時(shí),它向Squid發(fā)出一個(gè)申請(qǐng),要Squid替它請(qǐng)求,然后Squid 連接用戶要請(qǐng)求的網(wǎng)站并請(qǐng)求該主頁,接著把該主頁傳給用戶同時(shí)保留一個(gè)備份,當(dāng)別的用戶請(qǐng)求同樣的頁面時(shí),Squid把保存的備份立即傳給用戶,使用戶覺得速度相當(dāng)快。
正向代理,Squid后面是客戶端,客戶端上網(wǎng)要通過Squid去上;反向代理,Squid后面是服務(wù)器,服務(wù)器返回給用戶數(shù)據(jù)需要走Squid.
一、搭建Squid正向代理
1、安裝squid
[root@tpp ~]# yum install -y squid
2、編輯配置文件
[root@tpp ~]# vim /etc/squid/squid.conf ? ? ? //修改一處,添加兩句
找到:
cache_dir ufs /var/spool/squid 100 16 256
改為:
cache_dir ufs /var/spool/squid 1024 16 256 ? ? //1024緩存大小,16個(gè)子目錄,256個(gè)二級(jí)目錄
接著添加:
cache_mem 128 MB ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //指定緩存占用內(nèi)存的大小
在最后面添加:
refresh_pattern \.(jpg|png|gif|js|css|mp3|mp4) ?1440 ?20% ?2880 ?ignore-reload ? ? ?
//設(shè)置緩存對(duì)象,1440為緩存時(shí)間,ignore-reload為忽略重新加載
如下圖所示:
保存后測試下配置文件是否有語法錯(cuò)誤:
[root@tpp ~]# squid -kcheck
啟動(dòng)squid:
[root@tpp ~]# /etc/init.d/squid start
init_cache_dir /var/spool/squid... 正在啟動(dòng) squid:. ? ? ? [確定]
初始化squid后我們可以看看是否生成了緩存日志:
[root@tpp ~]# cat /var/log/squid/cache.log
也可以去緩存目錄下看看生成的文件:
[root@tpp ~]# ls /var/spool/squid/ ? ? ? ? ? ? ?//16個(gè)子目錄,子目錄下面一共還有256個(gè)二級(jí)目錄
00 ?01 ?02 ?03 ?04 ?05 ?06 ?07 ?08 ?09 ?0A ?0B ?0C ?0D ?0E ?0F ?swap.state
3、測試
(1)在Windows上測試
打開IE瀏覽器-->工具-->Internet選項(xiàng)-->局域網(wǎng)設(shè)置-->勾上代理服務(wù)器-->高級(jí)-->HTTP:服務(wù)器地址為:192.168.0.109,端口3128-->確定-->確定-->確定
接著我們用瀏覽器上網(wǎng)打開www.baidu.com,隨便訪問下網(wǎng)站。我們?cè)僮グ治鱿率欠駥?shí)現(xiàn)了代理
[root@tpp ~]# tcpdump -nn port 3128 ? ? ? //可以看到抓到了好多包
我們也可以去緩存目錄的二級(jí)子目錄下看到會(huì)生成256個(gè)三級(jí)目錄,第一個(gè)三級(jí)目錄/00/下會(huì)存放256個(gè)文件,放滿了即放在到下一個(gè)三級(jí)目錄/01/下,依次存放。
[root@tpp ~]# ls /var/spool/squid/00/00
(2)在Linux上測試
[root@tpp ~]# curl -x127.0.0.1:3128 www.baidu.com -I
HTTP/1.0 200 OK
Date: Tue, 15 Sep 2015 13:58:49 GMT
4、設(shè)置黑名單/白名單
設(shè)置了代理服務(wù)器后可以訪問任何的網(wǎng)站,那么我們還可以控制上網(wǎng),不讓訪問特定的網(wǎng)站。
(1)設(shè)置白名單:只能訪問百度,其他的網(wǎng)址都不能訪問。
編輯配置文件,設(shè)置acl
[root@tpp ~]# vim /etc/squid/squid.conf ? ? ? //在acl下面接著寫入以下內(nèi)容
acl http proto HTTP
acl good_domain dstdomain .baidu.com ? ? ? ? ?//good_domain自定義,dstdomain跟白名單
http_access allow http good_domain
http_access deny http !good_domain
保存退出后檢測配置文件是否有錯(cuò)誤,重啟服務(wù)。
[root@tpp ~]# squid -k check ? ? ? ? ? ? ? ? ?//可簡寫為 -kch
[root@tpp ~]# /etc/init.d/squid restart
停止 squid:................ ? ? ? ? ? ? ? ? ? ?[確定]
正在啟動(dòng) squid:. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]
注:在這里我們也可以不用重啟,直接重新加載就行,命令如下:
[root@tpp ~]# squid -k reconfigure ? ? ? ? ? //可簡寫為 -kre
1)Windows下測試:
我們打開網(wǎng)頁,可以發(fā)現(xiàn)只能上百度,其他的網(wǎng)站全部不能上。 ?
2)Linux下測試:
[root@tpp ~]# curl -x127.0.0.1:3128 www.baidu.com -I
HTTP/1.0 200 OK
[root@tpp ~]# curl -x127.0.0.1:3128 www.qq.com -I ? ?
HTTP/1.0 403 Forbidden
(2)設(shè)置黑名單:除了百度,其他的網(wǎng)站都能訪問。
[root@tpp ~]# vim /etc/squid/squid.conf ? ? ? //替換上面的白名單,寫入以下內(nèi)容
acl http proto HTTP
acl bad_domain dstdomain .baidu.com
http_access deny http bad_domain
http_access allow http !bad_domain
測試同上面一樣。
二、搭建Squid反向代理
反向代理主要用于緩存靜態(tài)項(xiàng),因?yàn)橹T多靜態(tài)項(xiàng)目尤其是圖片、流媒體等比較耗費(fèi)帶寬,比如聯(lián)通網(wǎng)訪問電信的資源本來就慢,如果再去訪問大流量的圖片、流媒體那更會(huì)慢了,所以如果在聯(lián)通網(wǎng)配置一個(gè)squid反向代理,讓聯(lián)通客戶端直接訪問這個(gè)聯(lián)通squid,而這些靜態(tài)項(xiàng)已經(jīng)被緩存在了squid上,這樣就大大加快了訪問速度。
反向代理過程和前面的正向代理沒有什么太大區(qū)別,唯一的區(qū)別是配置文件中一個(gè)地方需要改動(dòng)一下。(為了更好地實(shí)現(xiàn)效果,我們先把之前配置的正向代理注釋掉,瀏覽器也取消代理設(shè)置)
1、編輯配置文件
[root@tpp ~]# vim /etc/squid/squid.conf
找到:http_port 3128?
改為:http_port?80?accel vhost vport
然后再增加要代理的后端真實(shí)服務(wù)器信息(這里用qq.com和baidu.com來做例子):
cache_peer 101.226.103.106 parent 80 0 originserver name=a
cache_peer_domain a www.qq.com
cache_peer 115.239.211.112 parent 80 0 originserver name=b
cache_peer_domain b www.baidu.com
注:cache_peer為配置后端的服務(wù)器的ip(通過ping查看真實(shí)ip)以及端口,name后邊為要配置的域名,這里和后面的cache_peer_domain相對(duì)應(yīng)。實(shí)際的應(yīng)用中,ip大多為內(nèi)外ip,而域名也許會(huì)有多個(gè),如果是squid要代理一臺(tái)web上的所有域名,那么就寫成這樣:
cache_peer 192.168.10.111 80 0 originserver
后面的cache_peer_domain 也不用寫了。
2、測試反向代理
先檢查配置文件是否有錯(cuò)
[root@tpp ~]# squid -krestart
squid: ERROR: No running copy
這里報(bào)錯(cuò)了,說沒有運(yùn)行squid,我們查看下80端口的狀態(tài)
[root@tpp ~]# netstat -nlp
注:可以發(fā)現(xiàn)80端口被nginx服務(wù)占用了,因?yàn)橹霸谶@臺(tái)機(jī)器上配置過nginx服務(wù),所以80端口被nginx服務(wù)占據(jù)著,導(dǎo)致squid服務(wù)不能啟動(dòng),先殺死掉nginx服務(wù)進(jìn)程,再啟動(dòng)squid服務(wù):
[root@tpp ~]# killall nginx
[root@localhost ~]# /etc/init.d/squid start
正在啟動(dòng) squid:. ? ? ? ? ? ? ? [確定]
(1)在Windows下測試
首先找到C:\Windows\System32\drivers\etc\hosts文件,添加如下:
192.168.0.109 www.baidu.com www.qq.com
我們打開瀏覽器,測試下只能訪問www.baidu.com www.qq.com這兩個(gè)網(wǎng)站,其他的都不能訪問。
(2)在Linux下測試
[root@localhost ~]# curl -x127.0.0.1:80 www.baidu.com
[root@localhost ~]# curl -x127.0.0.1:80 www.qq.com
[root@localhost ~]# curl -x127.0.0.1:80 www.sina.com
看以看到結(jié)果和Windows下測試結(jié)果一樣。
? ? ? 本文轉(zhuǎn)自 M四月天 51CTO博客,原文鏈接:http://blog.51cto.com/msiyuetian/1695166,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
- 上一篇: 【ARM】arm异常中断处理知识点
- 下一篇: canvas做的图片查看器1