搭建一个大型网站架构的实验环境(Squid缓存服务器篇)第1/2页

2019-10-15 21:33:15王旭


2. 一个访问列表可以又多条规则组成。

3. 如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。

4. 一个访问条目中的所有元素将用逻辑与运算连接:

http_access Action 声明1 AND 声明2 AND 声明 OR.

http_access Action 声明3

多个 http_access 声明间用或运算连接,但每个访问条目的元素间用与运算连接。

5. 请记住列表中的规则总是遵循由上而下的顺序。

我们具体来看看如何运用acl和http_access。首先把squid.conf的配置改回原状,即修改http_access allow all为http_access deny all。下面给出几种常用访问控制:


根据IP鉴权

只有地址为192.168.100.10和192.168.100.100的终端可以使用代理

在squid.conf的ACCESS CONTROL配置部分添加

acl authorizedip src 192.168.100.10

acl authorizedip src 192.168.100.100

然后到http_access部分

在http_access deny all这一行前面添加

http_access allow authorizedip

如果需要设置的IP地址非常多,又不连续,是不是要写上一大堆的acl xxx xxx x.x.x.x?有一个简单的方法,把这些IP地址写在一个文件里,比如/etc/squid/authorizedip.txt,每行一个。然后在squid.conf里这样写

acl authorizedip src "/etc/squid/authorizedip.txt"

根据时间控制

关于时间段的设置,可以参见squid.conf中的说明,具体是S - Sunday, M - Monday, T - Tuesday, W - Wednesday, H - Thursday, F - Friday A - Saturday,如果七天都允许,也可以不写。时间格式是H1:M1-H2:M2,要求是前面的要小于后面的。

# 定义一个访问时间段:每周星期一到星期五的上午八点到下午五点,允许alloweduser用户在这个时间段内上网

acl accept_time time MTWHF8:00-17:00

http_access allow alloweduser accept_time

http_access deny alloweduser

访问特定URL地址

虽然我们不希望所有的人都使用代理自由的访问Internet,但有几个网站是可以让内部终端都能访问的。在squid.conf里添加访问控制:

acl alloweddomain dstdomain .linuxforum.net .linuxaid.com.cn

http_access allow alloweddomain

同样的,如果参数很多的情况,也可以把这些允许的地址名写到一个文本里:

acl alloweddomain dstdomain "/etc/squid/alloweddomain.txt"

alloweddomain.txt里是允许访问站点的列表,每行一个。

根据关键字过滤网址

有些网站(色情网站,广告网站)很令人讨厌,通过设置acl可以很容易屏蔽掉这些站点:

acl denyurl url_regex sex boylink xxx city69 asiaadult sehu

http_access deny denyurl

这个设置将过滤带有sex boylink xxx city69 asiaadult sehu这些关键字的URL地址。

和前面一样,也可以把这些关键字写到一个文本里

acl denyedurl url_regex "/etc/squid/sex.txt"