1》Squid简介:
Squid是一个支持HTTP,HTTPS,FTP等服务的Web缓存代理软件,它可以通过缓存页面实现降低带宽占用并优化页面响应时间,此外,Squid还具有强大的访问控制功能;Squid可以运行在各种系统平台上,包括windows,Squid会将页面缓存在内存及硬盘中,所以Squid对内存及硬盘要求比较高,更大的内存及硬盘意味着更多的缓存及更高的缓存命中率;Squid确保返回给客户的数据不是过时的数据,所以我们需要根据实际情况不定期地清空缓存数据;
Squid代码请求流程为:客户端访问Squid代理服务器,由代理服务器代表客户访问后端Real Server(真实服务器),Real Server 将响应数据返回给代理服务器,代理服务器将响应数据返回给客户端,同时将页面缓存在本地内存及硬盘中,当下次客户端再有相同的数据请求时,代理服务器将直接从本地缓存中提取数据返回给客户端;
Squid反向代理示意图:
= Squid1-------------->Real Server1
PC客户端====》Internet====>= Squid2-------------->Real Server2
= Squid3-------------->Real Server3
2》安装Squid服务:
1>yum安装软件包;
yum -y install squid
service squid start
2>配置文件解析:
使用YUM方式安装Squid时,默认的配置文件为/etc/squid/squid.conf,该配置文件由配置指令和配置选项构 成; httpd_port:设置Squid监听的网络端口,默认为3128端口,使用低于1024端口时,需要使用root启动Squid,ISP一般使用8080端口,vhost参数实现反向代理功 能;
cache_dir:设置缓存存储位置及大小,配置文件中可以使用多个cache_dir设置多个存储位置;
cache_dir ufs /usr/local/squid/var/cache 100 16 256
缓存路径;存储容量,单位为MB;16和256代表子目录个数,用于分类分层管理缓存数据;
access_log:设置日志路径及日志格式;
access_log /var/log/squid/access.log combined
acl:定义访问控制列表对象,可以控制源地址,端口,时间等;
acl localnet src 192.168.0.0/255.255.255.0
设置名称为localnet的ACL列表,控制对象为源地址网段为192.168.0.0/24
cache_peer:Squid支持在一组代理之间请求转发,组内的成员代理之间称为邻居,邻居关系为父子和兄弟;
cache_peer用来设置可以连接的其他代理服务器,其格式如下:
cache_peer hostname/IP type http-port icp-port [option]
hostname:邻居的主机名或IP地址;
type类型为父亲(parent),兄弟(sibling),广播(multicast);
http-port指定邻居的http端口号;
icp-port指定ICP端口号;
option(选项)有以下可选值:
proxy-only 实现不缓存来自邻居的任何响应
weight=n 设置服务器权重
ttl=n 该选项仅对广播邻居有效,设置广播TTL值
round-robin 仅在设置两个以上父Cache才有效,可以实现轮询的负载均衡
max-conn=n 设置连接邻居Cache的并发量
originserver 设置邻居为源真实服务器,做反向代理
visible_hostname:设置主机名,默认Squid将自动检测系统主机名;
3》常见代理服务器类型:
代理服务器有多种类型,一般意义上常分为标准正向代理服务器,透明代理服务器,反向代理服务器;
正向代理服务器主要应用于内部网络希望访问外部网络时缓存页面数据,由于目前IP地址稀缺,企业内部成百上千台计算机不可能同时都直接连接到Internet上,目前的解决方案是通过一个统一的网络接口连接Internet,而Squid就可以提供这么一个连接的接口;所有的客户端通过设置代理服务器连接至Squid,通过它来代理上网,在此模型下,Squid主要负责提供缓存加速及访问控制的功能,正向代理是对用户的一种操作;
透明代理与传统的正向代理类似,区别在于传统的正向代理需要每个客户端进行代理服务器的设置,而透明代理对用户是透明的,不需要终端用户进行特殊设置,透明代理需要结合网关进行部署,所有的操作均由管理员在网关服务器及代理服务器进行设置,这些对用户是透明的;
反向代理结合智能DNS即可实现基本的CDN(内容分发网络)框架,通过DNS的视图功能,我们可以为来自不同地区的DNS请求解析不同的结果返回给客户端;此时的代理服务器代表后端真实服务器,用户感觉不到自己是在访问代理服务器,而且由于使用了缓存技术,当大的并发访问量到达时,Squid也可以更快地为用户返回响应数据;
4》Squid应用实例:
1>实例环境:
squid.example.com eth0:172.31.16.165
eth1:192.168.0.254
web1.example.com eth0:192.168.0.1
web2.example.com eth0:192.168.0.2
client.example.com eth0:172.31.16.168
2>代理服务器的设置:
配置网络参数环境:
配置文件填充:
3>两台源服务器设置:
WEB1:
修正:
WEB2:
4>客户端验证:
客户端配置正确的网络参数后,通过浏览器访问代理服务器:http://172.31.16.165 ,由于我们在代理服务器中设置了两台源服务器,并且使用的是轮 询查询,所以客户端刷新后可以轮询查看到两个不同的页面;