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

[经验分享] Linux 之squid 服务应用

[复制链接]

尚未签到

发表于 2018-12-27 08:44:56 | 显示全部楼层 |阅读模式
  Squid是什么
  Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟。目前使用Squid的用户也是十分广泛的。Squid与Linux下其它的代理软件如Apache、Socks、TIS FWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议。
  

  Squid之所以用的很多,是因为它的缓存功能,Squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O. 从经济角度考虑,它是很多网站架构中不可或缺的角色。
  

  Squid不仅可以做正向代理,又可以做反向代理当作为正向代理时,Squid后面是客户端,客户端想上网不管什么网都得经过Squid. 当一个用户(客户端)想要请求一个主页时,它向Squid发出一个申请,要Squid替它请求,然后Squid 连接用户要请求的网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户请求同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。使用正向代理时,客户端需要做一些设置,才能实现,也就是平时我们在IE选项中设置的那个代理。反向代理是,Squid后面为某个站点的服务器,客户端请求该站点时,会先把请求发送到Squid上,然后Squid去处理用户的请求动作。阿铭教你一个特别容易的区分:正向代理,Squid后面是客户端,客户端上网要通过Squid去上;反向代理,Squid后面是服务器,服务器返回给用户数据需要走Squid.
  

  也许你会问,什么时候需要配置正向代理,又什么时候配置反向代理呢?阿铭的观点是,正向代理用在企业的办公环境中,员工上网需要通过Squid代理来上网,这样可以节省网络带宽资源。而反向代理用来搭建网站静态项(图片、html、流媒体、js、css等)的缓存服务器,它用于网站架构中
  

  示例:正向代理
  用户A 想访问 服务器B 要经过N多的网关过去,还有可能这些网关不允许用户A 访问。
  此时有一个服务器Z ,可以直接访问服务器B ,不需要经过那些网关。 此时 Z 就是代理服务器。此时的代理是  正向代理。代理的是用户端,而此时服务器B 不知道访问它的是 用户A ,只知道是 Z 访问了它,而不知道Z 后面的是谁。正向代理用户是知道有代理服务器Z 存在的,需要用户手动来设置IE(提高速度,变不可能为可能,)
  


  

  示例:向代理
  
  
  图片中原始资源服务器B 是不可以访问外面的资源的。用户A 想直接访问B也是不行的。因为防火墙限定了。此时在B 服外面做一个反向代理服务器Z ,让Z 来请求数据,这样用户可以通过访问Z来达到访问B 的目的。这就是反向代理。(反向代理服务器Z 是网站提供方给用户的,用户不知道后端还有服务器B)
  ---------------------------------------------------------------
  

  实例1:搭建squid正向代理
  官方网站为 http://www.squid-cache.org/
  yum install -y squid
  squid -v  查看版本以及编译参数
  > /etc/squid/squid.conf
  vim /etc/squid/squid.conf
  

  [root@LNMP ~]# yum install -y squid  #安装 squid
  

  [root@LNMP ~]# vim /etc/squid/squid.conf #打开配置文件,打开缓存文件存放目录
  

  
  cache_dir ufs /var/spool/squid 100 16 256 #启用缓存存放目录  100M 的大小
  cache_mem 128 MB  #如果有这行打开,如果没有手动添加。启用一些内存作为缓存,加快速度
  

  # Add any of your own refresh_pattern entries above these.
  refresh_pattern ^ftp:           1440    20%     10080
  refresh_pattern ^gopher:        1440    0%      1440
  refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
  refresh_pattern .               0       20%     4320
  refresh_pattern \.(jpg|png|js|css|mp3|mp4) 1440 20% 2880 ignore_reload
  #添加缓存匹配 ,这一行是手动添加的。保存退出
  

  [root@LNMP squid]# /etc/init.d/squid start  #启动 squid 服务
   #启动服务失败,报错没有设置 “visible_hostname
  

  [root@LNMP squid]# vim /etc/squid/squid.conf
  refresh_pattern \.(jpg|png|js|css|mp3|mp4) 1440 20% 2880 ignore_reload
  visible_hostname Linux-test #设置 visible_hostname

  2016/12/08 13:07:19| WARNING cache_mem is larger than total disk cache space!
  *这一条用又报 cache_mem 设置过大,cache_mem 设置成了128M ,而缓存目录是 100M,所以这样设置是不合理的,将cache_mem 更改为28M,比缓存目录小。
  启动:
  [root@LNMP squid]# /etc/init.d/squid start
  Starting squid:                                           [  OK  ]
  


  [root@LNMP squid]# ls /var/spool/squid/
  00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F  swap.state
  [root@LNMP squid]# netstat -lnp #squid 端口是 3128
  tcp        0      0 :::3128                     :::*                        LISTEN      2488/(squid)
http_port 3128 这个代理端口是可以更改的。
--------------------------------------------------
  在客户机进行测试设置代理,然后打开网页。网站是可以访问的,但是此时我们不能证实是通过代理来进行上网的。只能在linux 主机上进行抓包测试。
  10.72.4.50 port :3128
  

  [root@LNMP ~]# tcpdump -nn port 3128 #如果没有这个命令,yum install -y tcpdump
  下图证明代理已经生效  。

  

  

  进入到缓存目录可以查看到访问产生的临进文件
  


  

  -------------------------------------------------------
  访问控制设置(白明单):此时的代理网站可以访问任意的网站,那么就要做一些设置来限制某些网站。
  

  

  [root@LNMP ~]# vim /etc/squid/squid.conf
  acl http proto HTTP  
  acl good_domain dstdomain .linux.com .baidu.com #允许访问的 。dstdomain指定目标domain
  http_access allow good_domain
  http_access deny !good_domain  # “!”非“good_domain”
  

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  楼主粗心的过错(小插曲)
  [root@LNMP ~]# squid -kcheck  #检查配置文件有没有错
  2016/12/08 14:21:14| redreshAddToList: Unknown option '\.(jpg|gif|png|js|css|mp3|mp4)': ignore_reload
  # 排错  “ignore_reload”应该 为 “ignore-reload”
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  [root@LNMP ~]# squid -kcheck #再次检查没有输出,即没有错误
  [root@LNMP ~]# squid -kreconfig #重新应用配置文件
  在windows客户端上测试


  在别一台linux 客户机上行curl 测试

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  访问控制设置(黑明单
  

  acl bad_domain dstdomain  .linux.com  .baidu.com  #不允许访问的
  http_access deny bad_domain
  http_access allow !bad_domain     #非bad_domain
  

  亲测,是被拒绝的。
  
  --------------------------------------------------------------
  反向代理的设置:
  

  [root@LNMP ~]# vim /etc/squid/squid.conf  #因为作为用户来看访问的是服务器,不知道是代理。
  http_port 3128 #更改为 http_port 80  accel vhost vport
  
  cache_peer 180.97.33.108 parent 80 0 originserver name=baidu
  cache_peer_domain baidu www.baidu.com
  


  

  #以www.baidu.com,为例,先ping 出百度的IP 180.97.33.108,指定代理名:oribinserver name=baidu。如果还要代理别的网站,就再写两行,每两行作为一个单元。且一定要知道网站的源IP.
  

  [root@LNMP ~]# squid -kcheck
  [root@LNMP ~]# squid -kreconfig
  

  [root@LNMP ~]# netstat -lnp  #端口被nginx 占用
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1206/nginx
  

  [root@LNMP ~]# /etc/init.d/nginx stop #停掉nginx ,
  

  [root@LNMP ~]# /etc/init.d/squid stop
  Stopping squid: ................                           [  OK  ]
  [root@LNMP ~]# /etc/init.d/squid start
  Starting squid: .                                          [  OK  ]
  

  [root@LNMP ~]# netstat -lnp  #确认squid 在使用80 端口
  tcp        0      0 :::80                       :::*                        LISTEN      1589/(squid)
  

  在测试端windows c:\windowns\system32\drivers\etc\hosts 中写入代理的网址
  192.168.31.135 www.baidu.com www.qq.com www.sina.com
  

  在linux 客户端的测试
  
  


  在windowns Pc 端中的测试:百度网是可以上去的,QQ无法访问。

  


  





运维网声明 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-656273-1-1.html 上篇帖子: squid两种用途的细微的差别 下篇帖子: 2.2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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