Squid缓存服务器之ACL访问控制与反向代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Squid缓存服务器之ACL访问控制与反向代理相关的知识,希望对你有一定的参考价值。
Squid缓存服务器之ACL访问控制与反向代理
1、ACL访问控制
- Squid提供了强大的代理控制机制和,通过合理设置ACL并进行限制。可以针对原地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。
- 在配置文件squid.conf中ACL访问控制通过以下两个步骤来实现:其一,使用acl配置项定义需要控制的条件;其二,通过http_access配置项对已定义的列表做“允许”或者“拒绝”访问的控制。
1)、定义访问控制列表
- 每一行acl配置可以定义一条访问控制列表,格式如下:
acl 列表名称 列表类型 列表内容···
- 其中,“列表名称”有管理员自行指定,用来识别控制条件;“列表类型”必须使用Squid预定义的值,对应不同类型的控制条件;“列表内容”是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格分割,都为“或”的关系)。
- 常用的访问控制列表类型:
列表类型 | 列表内容示例 | 含义/用途 |
---|---|---|
src | 192.168.1.168;192.168.1.0/24;192.168.1.0-192.168.3.0/24 | 源IP地址、网段、IP地址范围 |
dst | 216.163.137.3;61.135.167.167/24;www.baidu.com | 目标IP地址、网段、主机名 |
port | 80;443;8080;20;21 | 目标端口 |
dstdomain | .qq.com | 目标域,匹配域内所有站点 |
time | MTWHF 8:30-17:30;12:00-13:00;AS | 使用代理服务器的时间段;字母表示一星期中个天的缩写;M-Monday、T-Tuesday、W-Wednesday、H-Thursday、F-Friday、A-Saturday、S-Sunday |
maxconn | 20 | 每个客户机的并发连接数 |
url_regex | url_regex -i ^rtsp://;url_regex -i ^emule:// | 目标资源的URL地址,-i表示忽略大小写 |
urlpath_regex | urlpath_regex -i sex sdult;urlpath_regex -i .mp3$ | 目标资源的额、整个URL路径,-i表示忽略大小写 |
2)、设置访问权限
- 定义好好、各种访问控制列表以后,需要使用http_access配置项来进行控制。需要注意的是,http_accss配置行必须放在对应的acl设置行之后。每一行http_access配置确定一条访问控制规则,格式如下:
http_access alow或deny 列表名···
- 在每一条http_access规则中,可以同时包含多个访问控制列表名,每个列表之间以空格分隔,与“与”的关系,表示必须满足所有访问控制列表对应的条件才会进行限制。需要使用取反条件是,可以在访问控制列表前添加“!”符号。
- 访问控制时,Squid将按照各条规则的顺序依次进行检查,如果找到一条项匹配的规则就不再向后搜索。因此规则顺序安排是非常重要的,以下两种默认情况需要我们注意。
(1)、没有设置任何规则时;Squid服务将拒绝客户端的请求
(2)、有规则但找不到相匹配的项:Squid将采用与最后一条规则相反的权限,即如果最后一条规则时allow,就拒绝客户端的请求,否则允许该请求。
3)、 验证访问控制效果
- 在Squid代理服务器上设置是内网客户机192.168.100.101访问不到外网Web服务器192.168.190.128;
2、反向代理
-
squid反向代理可以加速网站的访问速度,可将不同的URL请求分发到后台不同的web服务器上,同时互联网用户只能看到反向代理服务器的地址,加强网站的访问安全。
-
squid反向代理加速的原理描述如下:
-
(1)、Squid反向代理服务器位于本地Web服务器和Internet之间,客户端请求访问Web服务器时,DNS将访问的域名解析为Squid反向代理服务器的IP地址,客户端将访问Squid代理服务器。
- (2)、如果Squid反向代理服务器缓存了该请求的资源,则将该请求的资源返回给客户端,否则反向代理服务器将向后台的Web服务器请求资源,然后将应答资源返回给客户端,同时也将该资源在本地缓存一份,供下一个请求使用。
1)、Squid反向代理实验拓补图
2)、Squid反向代理实验环境
服务器 | IP地址 | 功能 |
---|---|---|
代理服务器 | 172.16.190.130 | squid代理服务 |
client | 172.16.190.132 | 负责访问 |
真实服务器1 | 172.16.190.128 | 提供http服务 |
真实服务器2 | 172.16.10.131 | 提供http服务 |
3)、实验步骤
- (1)、配置squid代理服务器
vim /etc/squid.conf
http_port 192.168.190.130:80 accel vhost vport # 将端口监听在 172.16.10.137的80端口上,accel 指启用加速模式,vhost,vport用于转发请求
cache_peer 192.168.190.128 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 #cache_peer 指定后端服务器地址,80 为后端服务端口,0 为 ICP 端口号(多个 Squid 时用),originserver 指定资源服务器,round-robin指使用轮询方式,weight指的是权重,自由分配,name 指定一个别名
cache_peer 192.168.190.131 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com #定义两个个基于域名的控制列表,分别命名为web1,web2
-
(2)、开启http服务即可
- (3)、修改客户端win7的地址解析使之识别www.yun.com
以上是关于Squid缓存服务器之ACL访问控制与反向代理的主要内容,如果未能解决你的问题,请参考以下文章
缓存加速------Squid代理服务器应用(传统代理,透明代理,反向代理,ACL访问控制,日志分析)
squid代理服务的ACL访问控制日志分析及反向代理(4.1版本)