配置squid代理

Squid大多用做http服務的緩存服務器,緩存圖片等靜態文件能夠加速客戶端的請求返回速度。css

Squid不只能夠作正向代理,又能夠作反向代理。看成爲正向代理時,Squid後面是客戶端,客戶端想上網無論什麼網都得通過Squid. 當一個用戶(客戶端)想要請求一個主頁時,它向Squid發出一個申請,要Squid替它請求,而後Squid 鏈接用戶要請求的網站並請求該主頁,接着把該主頁傳給用戶同時保留一個備份,當別的用戶請求一樣的頁面時,Squid把保存的備份當即傳給用戶,使用戶以爲速度至關快。nginx

正向代理,Squid後面是客戶端,客戶端上網要經過Squid去上;反向代理,Squid後面是服務器,服務器返回給用戶數據須要走Squid.web


1、搭建Squid正向代理vim


一、安裝squid後端

[root@tpp ~]# yum install -y squid


二、編輯配置文件瀏覽器

[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個子目錄,256個二級目錄

接着添加:dom

cache_mem 128 MB                               //指定緩存佔用內存的大小

在最後面添加:curl

refresh_pattern \.(jpg|png|gif|js|css|mp3|mp4)  1440  20%  2880  ignore-reload       
                                 //設置緩存對象,1440爲緩存時間,ignore-reload爲忽略從新加載

以下圖所示:

wKiom1X4HGDRjVIiAAJ53ybpYxs422.jpg

保存後測試下

配置文件是否有語法錯誤:

[root@tpp ~]# squid -kcheck

啓動squid:

[root@tpp ~]# /etc/init.d/squid start
init_cache_dir /var/spool/squid... 正在啓動 squid:.       [肯定]

初始化squid後咱們能夠看看是否生成了緩存日誌:

[root@tpp ~]# cat /var/log/squid/cache.log

也能夠去緩存目錄下看看生成的文件:

[root@tpp ~]# ls /var/spool/squid/              //16個子目錄,子目錄下面一共還有256個二級目錄
00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F  swap.state


三、測試

(1)在Windows上測試

打開IE瀏覽器-->工具-->Internet選項-->局域網設置-->勾上代理服務器-->高級-->HTTP:服務器地址爲:192.168.0.109,端口3128-->肯定-->肯定-->肯定

接着咱們用瀏覽器上網打開www.baidu.com,隨便訪問下網站。咱們再抓包分析下是否實現了代理

[root@tpp ~]# tcpdump -nn port 3128       //能夠看到抓到了好多包

咱們也能夠去緩存目錄的二級子目錄下看到會生成256個三級目錄,第一個三級目錄/00/下會存放256個文件,放滿了即放在到下一個三級目錄/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


四、設置黑名單/白名單

設置了代理服務器後能夠訪問任何的網站,那麼咱們還能夠控制上網,不讓訪問特定的網站。

(1)設置白名單:只能訪問百度,其餘的網址都不能訪問。

編輯配置文件,設置acl

[root@tpp ~]# vim /etc/squid/squid.conf       //在acl下面接着寫入如下內容
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

保存退出後檢測配置文件是否有錯誤,重啓服務。

[root@tpp ~]# squid -k check                  //可簡寫爲 -kch
[root@tpp ~]# /etc/init.d/squid restart
中止 squid:................                    [肯定]
正在啓動 squid:.                               [肯定]

注:在這裏咱們也能夠不用重啓,直接從新加載就行,命令以下:

[root@tpp ~]# squid -k reconfigure           //可簡寫爲 -kre

1)Windows下測試:

咱們打開網頁,能夠發現只能上百度,其餘的網站所有不能上。  

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)設置黑名單:除了百度,其餘的網站都能訪問。

[root@tpp ~]# vim /etc/squid/squid.conf       //替換上面的白名單,寫入如下內容
acl http proto HTTP
acl bad_domain dstdomain .baidu.com
http_access deny http bad_domain
http_access allow http !bad_domain

測試同上面同樣。




2、搭建Squid反向代理


反向代理主要用於緩存靜態項,由於諸多靜態項目尤爲是圖片、流媒體等比較耗費帶寬,好比聯通網訪問電信的資源原本就慢,若是再去訪問大流量的圖片、流媒體那更會慢了,因此若是在聯通網配置一個squid反向代理,讓聯通客戶端直接訪問這個聯通squid,而這些靜態項已經被緩存在了squid上,這樣就大大加快了訪問速度。

反向代理過程和前面的正向代理沒有什麼太大區別,惟一的區別是配置文件中一個地方須要改動一下。(爲了更好地實現效果,咱們先把以前配置的正向代理註釋掉,瀏覽器也取消代理設置)


一、編輯配置文件

[root@tpp ~]# vim /etc/squid/squid.conf

找到:http_port 3128 

改成:http_port 80 accel vhost vport

而後再增長要代理的後端真實服務器信息(這裏用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爲配置後端的服務器的ip(經過ping查看真實ip)以及端口,name後邊爲要配置的域名,這裏和後面的cache_peer_domain相對應。實際的應用中,ip大多爲內外ip,而域名也許會有多個,若是是squid要代理一臺web上的全部域名,那麼就寫成這樣:

cache_peer 192.168.10.111 80 0 originserver

後面的cache_peer_domain 也不用寫了。


二、測試反向代理

先檢查配置文件是否有錯

[root@tpp ~]# squid -krestart
squid: ERROR: No running copy

這裏報錯了,說沒有運行squid,咱們查看下80端口的狀態

[root@tpp ~]# netstat -nlp

注:能夠發現80端口被nginx服務佔用了,由於以前在這臺機器上配置過nginx服務,因此80端口被nginx服務佔據着,致使squid服務不能啓動,先殺死掉nginx服務進程,再啓動squid服務:

[root@tpp ~]# killall nginx
[root@localhost ~]# /etc/init.d/squid start
正在啓動 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這兩個網站,其餘的都不能訪問。

(2)在Linux下測試

[root@localhost ~]# curl -x127.0.0.1:80 www.baidu.com

wKioL1X4Sc2glIDYAACEP6oJfEs647.jpg

[root@localhost ~]# curl -x127.0.0.1:80 www.qq.com 

wKiom1X4R6_QP0n7AABvLvGy27Y320.jpg

[root@localhost ~]# curl -x127.0.0.1:80 www.sina.com

wKioL1X4Sfbh0AD3AACF1Cxje60812.jpg

看以看到結果和Windows下測試結果同樣。

相關文章
相關標籤/搜索