• Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等条件进行过滤。
  • 在配置文章squid.conf中,ACL访问控制通过以下两个步骤来实现:
    1:使用acl配置项定义需要控制的条件
    2:通过http_access 配置对已定义的列表做出"允许" 或者 "拒绝" 访问的控制

    定义控制列表:    acl      列表名      列表类型      列表内容
    允许访问权限:    http_access  allow   列表名
    拒绝访问权限:    http_access  deny   列表名
  • 列表类型
  • src :源IP地址、网段、IP范围

    acl zkc1 src 192.168.100.50/32
    http_access deny zkc1                  //禁止zkc列表的IP进行访问
  • dst :目标IP、网段、主机名

    acl zkc2 dst 192.168.100.11/32
    http_access deny zkc2                //禁止访问zkc2列表的IP 
  • maxconn :每个客户机的并发连接数

    acl  MC20 maxconn 20                  // 最大并发连接
    http_access deny MC20               //客户机的并发连接超过20将被阻止
  • url_regex :目标资源的URL地址 -i:表示忽略大小写

    acl BURL url_regex -i ^rtsp:// ^emule://             //以rtsp://  等 开头的URL
    http_access deny BURL                 //拒绝列表内URL
  • urlpath_regex :目标资源的整个URL路径 -i:表示忽略大小写

    acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$            //以mp3、mp4、rmvb结尾的URL路径
    http_access deny PURL                //禁止客户机下载mp3、mp4等文件
  • time : 使用代理服务的时间段
  • 字母表示一星期几的英文缩写
  • M—Monday 、T—Tuseday、W—Wednesday、H—Thursday、F—Friday、A—Saturday、S—Sunday

    acl work time MTWHF 08:30-17:30         //时间为周一至周五 8点30到17点30
    http_access allow work                    //允许客户机在工作时间上网
  • port : 目标端口

    acl ABC port 443                 //目标端口443
    http_access deny ABC     //禁止访问443端口
  • dstdomain : 目标域,匹配域内的所有站点

    acl CBA  dstdomain .qq.com        //以.qq.com结尾的网站
    http_access deny CBA     //禁止访问 .qq.com 结尾的网站
  • 同类对象较多时:
  • 当需要限制的同一类对象较多时,可以使用独立的文件夹来存放,在acl配置行指出对应文件位置。

    # mkdir /etc/squid 
    # vim  /etc/squid/dest.list
         192.168.100.11
         192.168.100.12
         192.168.100.13   #目标web
    # vim /etc/squid.conf
         acl destionhost dst "/etc/squid/dest.list"
         http_access deny destionhost   #拒绝列表(注意置顶) 

Squid的ACL访问控制及反向代理Squid的ACL访问控制及反向代理Squid的ACL访问控制及反向代理



  • Squid方向代理
  • Squid 反向代理常用于服务器端,客户端访问 Squid 代理服务器的 80 端口,Squid 代理服务器根据配置去请求后端的 web 服务器,然后将请求到的信息保存在本地并回传给客户端,当又有客户端请求相同资源时,Squid 代理服务器直接将缓存中的信息回传给客户端。
  • 代理服务器:IP192.168.100.10
  • web1服务器:IP 192.168.100.11
  • web2服务器:IP 192.168.100.12
  • 客户机上需要做域名解析代理服务器的IP 为www.yun.com

    # vim /etc/squid.conf
    http_port 192.168.100.10:80 accel vhost vport   
     (// 本地地址   accel:加速代理  虚拟主机  虚拟端口)
    cache_peer 192.168.100.11 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
    cache_peer 192.168.100.12 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
    (//指定负向服务器  ICP端口不开启设为0   不进行查询  指向真实服务器  轮询   最大连接30   权重1   名字)
    cache_peer_domain web1 web2 www.yun.com
    (//指定web1,web2的域名为www.yun.com )
    
    # service squid restart  //重启服务

    Squid的ACL访问控制及反向代理

  • windows7上测试
  • 修改代理服务器端口 80

Squid的ACL访问控制及反向代理Squid的ACL访问控制及反向代理Squid的ACL访问控制及反向代理