系统版本:CentOS7.X
概念
Squid是一个高性能的代理缓存服务器。可以帮助PC代理去请求页面数据,并缓存到本地。当第二次继续访问时直接将缓存页面返回给PC。
Squid的特点:
通过缓存的方式为用户提供WEB访问以及加速
对用户访问的WEB进行过滤控制
Squid工作有三种方式:正向代理、透明代理、反向代理。
理解示意图:
服务端:搭建正向代理服务
一、使用YUM工具安装Squid服务
# yum -y install squid
二、编辑Squid主配置文件,默认为简易配置
# vi /etc/squid/squid.conf (编辑主配置文件
acl localnet src 192.168.1.0/24 #定义一个ACL,名为localnet,基于源地址为192.168.1.0/24网段
http_access allow localnet #调用ACL,允许localnet列表中的网段访问代理服务器
http_access deny all #拒绝所有
http_port 192.168.1.1:3128 #设置监听端口和地址,默认为3128
coredump_dir /var/spool/squid #设置高速缓存目录,默认为/var/spool/squid
access_log /var/log/squid/access.log #日志文件存放位置
三、开启服务
# systemctl start squid (开启服务
# netstat -lnupt |grep squid (查看端口
客户端:设置代理服务器
设置步骤:打开IE浏览器-----Internet属性------连接-----局域网设置
配置完整解析
配置文件路径:/etc/squid/squid.conf
日志文件路径:/var/log/squid
配置说明
一、基本配置
http_port 192.168.1.1:3128 #设置监听地址和端口,如果只是端口则表示监听所有地址。
visible_hostname ren.com #可发现的主机名,给代理服务器设置一个名字。
access_log /var/log/squid/access.log #访问日志存放位置。
coredump_dir /var/spool/squid #设置一个内核转存目录,当Squid挂掉的时候,会将内存中的数据写到该目录下,默认为/var/spool/squid。
cache_mgr squiderror@test.com #设置一个邮箱,当用户使用代理服务器中出现问题,会在错误页面显示一个邮箱地址,用于用户反馈错误。
reply_body_max_size 1024000 allow all #限制下载文件大小,单位为字节B。
二、优化配置
cache_dir ufs /var/spool/squid 100 16 256 #设置在本地磁盘设置一个缓存目录用于缓存数据。
“ufs”表示缓存数据的存储格式;
“/var/spool/squid”表示设置的缓存目录;
“100”表示缓存目录占磁盘空间大小,单位为MB;
“16”表示缓存数据的一级子目录个数为16个;
“256”表示缓存数据的二级子目录个数为256个。
cache_mem 1024MB #缓存占物理内存大小。单位为MB。
cache_swap_low 85 #缓存占Swap虚拟内存最低大小为85%。
cache_swap_high 95 #缓存占Swap虚拟内存最高大小为95%。当缓存数据占内存大小到95%时,会自动删除旧数据释放内存空间到百分之85%。
minimum_object_size 0KB #设置数据对象(页面数据)的最小大小,0表示不限制。
maximum_object_size 4096KB #设置数据对象(页面数据)的最大大小,当大于4MB的数据在不会缓存到磁盘。
三、访问控制
1、定义一个ACL
书写格式:acl 列表名 列表类型 内容 | ||
acl localnet src 192.168.1.0/24 #定义一个基于源IP的,名为localnet的ACL,网段为192.168.1.0/24。
acl Safe_ports port 80 #定义一个基于端口的,名为Safe_ports的ACL,端口号为80。
acl Ddomain dstdomain gsgw.com #定义一个基于目标域名的,名为Domain的ACL,域名为为gsgw.com。
acl CONNECT method CONNECT #定义一个基于访问请求类型的,名为CONNECT的ACL,请求类型为CONNECT。
acl Time time MTWHF 8:30-17:30 #定义一个基于时间的,名为Time的ACL,指定时间段为周一到周五每天的8:30-17:30。
acl MAX maxconm 20 #定义一个客户机最大连接数,名为MAX的ACL,设置连接数为20。
acl URL url_regex ^https:// #定义一个基于URL地址过滤的,名为URL的ACL,设置URL开头为https://的地址。正则中“^”表示开头,“$”表示结尾。
2、调用ACL
http_access deny all #拒绝访问所有
http_access allow localnet #允许localnet中定义的地址
http_access allow Safe_ports #允许Safe_port中定义的端口
http_access allow Ddomain #允许Ddomain中定义的域名
http_access allow CONNECT #允许CONNECT中定义的HTTP访问请求类型
http_access allow Time #只有在Time中定义的时间段才能访问
http_access allow MAX #MAX中定义的客户机最大连接数为20
http_access allow URL #只允许访问符合URL中定义的路径地址
四、开启透明代理
http_port 192.168.1.0/24:3128 transparent #设置监听地址和端口,如果只是端口则表示监听所有地址。并支持透明代理。
五、开启反向代理
http_port 192.168.1.1:80 vhost vport #设置代理服务器监听的端口为80,并开启虚拟主机加速模式。
1、定义后端服务器
#设置后端WEB服务器地址和端口。采用权重调用的方式实现后端WEB服务器的负载均衡。
cache_peer 192.168.1.11 parent 80 0 originserver weight=1 max-conn=30 name=webServer1
cache_peer 192.168.1.12 parent 80 0 originserver weight=1 max-conn=30 name=webServer2
parent后面的0表示ICP端口号,当存在多个Squid服务器时使用。
weight表示设置一个权重值,值高则优先去这台服务器请求。
max-conn表示连接次数。
name表示定义一个别名,用于下方调用。
2、配置域名转发
#调用上面定义的服务器,当客户来代理服务器访问www.a.com时则将请求转发给后端的WEB服务器。
cache_peer_domain webServer1 www.a.com
cache_peer_domain webServer2 www.a.com