正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低原服务器的负载。

不仅如此,还为读者们添加了对指定IP地址、网页关键词、网址与文件后缀的ACL访问限制功能的实验,真的很实用哦~

简单说就是客户端A向代理服务器提出访问Internet的请求,代理服务器接受请求之后先去缓存里看有没有它所需要的,有就给它,没有就代替客户端向Internet上的主机发送请求,同时将资源缓存到本地

还有以个更重要的优点是,可以控制客户端能够访问哪些网页,不能够访问那些网页。

首先我们在虚拟机上通过yum仓库下载安装squid服务

输入命令:yum  install squid  -y

做代理服务器最好是双网卡,所有我们在我们的虚拟机上再加一块网卡,右键虚拟机选项卡,

接下来我们修改 防火墙重定向策略,来自192.168.22.0的网络重定向到3128端口 一个是80端口的一个是443的

输入命令:iptables -t nat -I PREROUTING -i ens33 -s 192.168.22 .0/ 24 -p tcp --dport 80 -j REDIRECT -- to 3128

输入命令:iptables -t nat -I PREROUTING -i ens33 -s 192.168.22 .0/ 24 -p tcp --dport 443 -j REDIRECT -- to 3128

之后添加防火墙策略并应用允许3128端口通过 然后重启squid

输入命令:iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

我们可以用检查错误的命令检查一下,检查我们的配置文件有没有错误(我的没有错误)

输入命令:squid -k parse

打开我们的火狐浏览器看看我们的网页吧 输入200.200.200.200

透明反向代理

编辑 Squid服务程序的配置文件(正向代理与反向代理不能同时使用,请还原您前面修改过的参数)

输入命令:vi  /etc/squid/squid.conf

//第59行,修改格式为:http_port Squid服务器地址:监听端口号 vhost

//第60行,添加格式为:cache_peer 原网站服务器地址 parent 服务器端口号 0 originserver

重启服务就可以了

访问网站 输入192.168.22.100

ACL是Access Control List(访问控制列表)

输入命令:vi  /etc/squid/squid.conf      打开配置文件,我们可以看到ACL访问控制列表

Saquid服务的ACL访问控制是非常有用的功能,可以根据特定条件来进行数据缓存或限制用户的访问,ACL元素的定义语法为:

acl aclname acltype string

acl aclname acltype "file"

src定义来源地址(即用户的客户机IP地址):

acl aclname src ip-address/netmask

acl aclname src addr1-addr2/netmask

dst定义目标地址(即用户请求的网站IP地址):

acl aclname dst ip-address/netmask

port用于指定访问端口:

acl aclname port 80 1024

acl aclname port 0-1024

url_regex用于限制网址中的关键词:

acl aclname url_regex [-i] pattern

proto用于定义要代理的协议:

acl aclname proto HTTP FTP

method用于指定请求的方法:

acl aclname method GET POST

访问控制列表由多个规则条目组成的,根据指定的条件来允许或限制访问请求,匹配顺序会由上至下,一旦匹配则立即结束,通常会在控制列表的最下面写上 “deny all”或者“allow all”来避免安全隐患。

例子:
仅允许 192.168.10.20的主机使用本地Squid服务,拒绝其余主机:

acl client src 192.168.10.20

http_access allow client

http_access deny all

拒绝客户机使用代理服务器访问带有关键词 longshisan ”的网站:

acl deny_keyword url_regex -i longshisan

http_access deny deny_keyword

拒绝客户机使用代理服务器访问百度 网站:

acl deny_url url_regex http://www.baidu.com

http_access deny deny_url

禁止客户机使用代理服务器下载以 mp3与rar为后缀的文件:

acl badfile urlpath_regex -i \.mp3$ \.rar$

http_access deny badfile