设为首页 收藏本站
查看: 1201|回复: 0

[经验分享] 配置Squid服务

[复制链接]
发表于 2018-12-26 10:36:07 | 显示全部楼层 |阅读模式
  

  Squid大多用作http服务的缓存服务器,缓存图片等静态文件可以加速客户端的请求返回速度。
  Squid不仅可以做正向代理,又可以做反向代理。当作为正向代理时,Squid后面是客户端,客户端想上网不管什么网都得经过Squid. 当一个用户(客户端)想要请求一个主页时,它向Squid发出一个申请,要Squid替它请求,然后Squid 连接用户要请求的网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户请求同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
  正向代理,Squid后面是客户端,客户端上网要通过Squid去上;反向代理,Squid后面是服务器,服务器返回给用户数据需要走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个子目录,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 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

  

  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 -I
HTTP/1.0 200 OK
Date: Tue, 15 Sep 2015 13:58:49 GMT

  

  4、设置黑名单/白名单

  设置了代理服务器后可以访问任何的网站,那么我们还可以控制上网,不让访问特定的网站。
  (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

测试同上面一样。

  

  

  

  二、搭建Squid反向代理
  反向代理主要用于缓存静态项,因为诸多静态项目尤其是图片、流媒体等比较耗费带宽,比如联通网访问电信的资源本来就慢,如果再去访问大流量的图片、流媒体那更会慢了,所以如果在联通网配置一个squid反向代理,让联通客户端直接访问这个联通squid,而这些静态项已经被缓存在了squid上,这样就大大加快了访问速度。

  反向代理过程和前面的正向代理没有什么太大区别,唯一的区别是配置文件中一个地方需要改动一下。(为了更好地实现效果,我们先把之前配置的正向代理注释掉,浏览器也取消代理设置)
  

  1、编辑配置文件

  
[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 也不用写了。

  

  2、测试反向代理

  先检查配置文件是否有错
  
[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


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


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


  看以看到结果和Windows下测试结果一样。
  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655993-1-1.html 上篇帖子: squid设置 下篇帖子: Iptables+squid构建学校机房的安全
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表