配置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个子目录,256个二级目录接着添加: cache_mem 128 MB //指定缓存占用内存的大小在最后面添加: refresh_pattern \.(jpg|png|gif|js|css|mp3|mp4) 1440 20% 2880 ignore-reload //设置缓存对象,1440为缓存时间,ignore-reload为忽略重新加载如下图所示:
保存后测试下配置文件是否有语法错误: [root@tpp ~]# squid -kcheck启动squid: [root@tpp ~]# /etc/init.d/squid startinit_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 3、测试 (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 -IHTTP/1.0200 OK Date: Tue, 15 Sep 2015 13:58:49 GMT 4、设置黑名单/白名单 设置了代理服务器后可以访问任何的网站,那么我们还可以控制上网,不让访问特定的网站。 (1)设置白名单:只能访问百度,其他的网址都不能访问。 编辑配置文件,设置acl [root@tpp ~]# vim /etc/squid/squid.conf //在acl下面接着写入以下内容acl http protoHTTPacl good_domain dstdomain .baidu.com //good_domain自定义,dstdomain跟白名单http_accessallow http good_domainhttp_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 //可简写为-kre1)Windows下测试: 2)Linux下测试: [root@tpp ~]# curl -x127.0.0.1:3128 www.baidu.com -IHTTP/1.0200 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 //替换上面的白名单,写入以下内容aclhttp proto HTTPacl bad_domain dstdomain .baidu.comhttp_access deny httpbad_domainhttp_access allow http !bad_domain测试同上面一样。 二、搭建Squid反向代理 反向代理主要用于缓存静态项,因为诸多静态项目尤其是图片、流媒体等比较耗费带宽,比如联通网访问电信的资源本来就慢,如果再去访问大流量的图片、流媒体那更会慢了,所以如果在联通网配置一个squid反向代理,让联通客户端直接访问这个联通squid,而这些静态项已经被缓存在了squid上,这样就大大加快了访问速度。1、编辑配置文件 [root@tpp ~]# vim /etc/squid/squid.conf找到:http_port 3128 改为:http_port80 accel vhost vport cache_peer 101.226.103.106 parent 80 0 originservername=acache_peer_domain a www.qq.comcache_peer 115.239.211.112 parent 80 0originserver name=bcache_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 也不用写了。 2、测试反向代理 先检查配置文件是否有错 [root@tpp ~]# squid -krestartsquid: 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
[root@localhost ~]# curl -x127.0.0.1:80 www.qq.com
[root@localhost ~]# curl -x127.0.0.1:80 www.sina.com
有兴趣朋友可以了解更多java教程 http://java.itcast.cn/java/video.shtml
|