配置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下测试结果同样。

相关文章
相关标签/搜索