squid 服务的正向代理
1)标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。
2)透明代理缓冲服务器
透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。
squid的主要配置
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid
主配文件:/etc/squid/squid.conf
监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log
正向代理服务器的搭建实验 代理服务器ip 172.25.254.173 客户端 ip172.25.254.93
1)为了避免防火墙和selinux安全上下文的影响,关闭这些服务。
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2)安装软件
yum install squid -y
systemctl start squid
netstat -antlpe | grep squid 查看3128端口是否打开
3 )修改主配置文件
vim /etc/squid/squid.conf
http_port 3128
http_access allow all 允许所有人访问
cache_dir ufs /var/spool/squid 100 16 256
usf:缓存数据的存储格式
/var/spool/squid 缓存目录
100 : 缓存目录占磁盘空间大小(M)
16 :缓存空间一级子目录个数
256 :缓存空间二级子目录个数
4) 重启服务在客户端浏览器进行测试
systemctl restart squid
然后在客户端输入http://172.25.254.173 就可以看到服务器中的内容了
squid服务集群
172.25.254.X(client)
www.abc.com
dns轮询技术或者负载均衡软件ngix
172.25.254.93(squid1)(正向代理) 172.25.254.94(squid2)(正向代理)
172.25.254.173 172.25.254.103 172.25.254.173 172.25.254.103
web1 web2 web1 web2
1)两个主机ip 172.25.254.173 web1和ip 172.25.254.102 web2上安装httpd 注意所有的时间一定要同步,特别web1和web2。如果web1和web2时间太久的话,可能会造成客户端访问时不先访问缓存而是先去访问后台web,也就是缓存失效了。
分别在/var/www/html默认发布目录下 (搭建环境时关闭火墙和selinux为disable避免麻烦)
vim index.html #ip为173的主机
<h1>test1</h1>
systemctl restart httpd
vim index.html #ip为102的主机
<h1>test2</h1>
systemctl restart httpd
2)在ip为172.25.254.93上安装squid,修改主配置文件
yum install squid -y
systemctl start squid
vim /etc/squid/squid.conf
http_access allow all
http_port 80 vhost vport
80 因为外网用户只能通过访问你的80端口
vhost 支持域名和主机名来代理节点
vport 支持ip和端口来代理节点
cache_dir ufs /var/spool/squid 100 16 256
cache_peer 172.25.254.173 parent 80 0 proxy-only round-robin originserver name=web1 weight=3
--172.25.254.173 web服务器的ip
--parent 上下级关系,非平级关系
--80 代理web服务器的80端口
--0 没有使用lcp,表示就一台squid服务器
--proxy-only 向parent proxy要数据不会存储到本地proxy服务器,降低主机负担
--round-robin 轮询调度
--originserver 表示源实际服务器
--name=web1 定义一个名字让后面的参数使用
weight=n 权重 可以指定多个上册proxy服务器,所以可以指定哪个比较重要 n越大说明这步proxy服务器越重要
cache_peer 172.25.254.102 parent 80 0 proxy-only round-robin originserver name=web2
cache_peer_domain web1 web2 www.adc.com
对www.abc.com的请求会给这台web服务器,如果有多台web服务器可以绑定到同一个域名上实现RR轮询调度
3)也可以增加多台squid服务器来做2配置
4)在客户端ip为172.25.254.73的主机做手动解析
vim /etc/hosts
172.25.254.93 www.adc.com
浏览器来测试 www.abc.com 会发现web1和web2内容轮询的方式出现(测试的时候没有加权重!)