Squid 缓存代理–反向代理
反向代理:如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端:否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将应答缓存在本地,供下一个请求者使用。
工作机制
- 缓存网页对象,减少重复请求
- 将互联网请求轮询按权重分配到内网web服务器
- 代理用户请求,避免用户直接访问web服务器,提高安全
搭建 Squid 反向代理
vim /etc/squid.conf
......
--60行--修改,插入
http_port 192.168.60.8:80 accel vhost vport
cache_peer 192.168.60.44 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.60.112 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.kfc.com
#表示对www.kfc.com的请求,squid向192.168.60.112和192.168.60.44的80端口发出请求
//清空之前透明模式配置的 iptables 规则
iptables -F
iptables -t nat -F
systemctl stop httpd/nginx #防止 httpd或nginx 服务使用的 80 端口号和 squid 反向代理配置的监听端口冲突
systemctl restart squid
服务器配置
#节点1:(60.44)
echo "hello" >> /usr/local/nginx/html/test.html
#节点2:(60.112)
echo "HELLO" >> /usr/local/nginx/html/test.html
#客户机的域名映射配置
vim /etc/hosts
添加
192.168.60.8 www.kfc.com
客户端浏览器不开启代理
ip访问
域名访问
查看缓存命中情况
总结
#配置文件方面
http_port 192.168.60.8:80 accel vhost vport
//squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端
口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口
直接请求数据。
//accel :反向代理加速模式
//vhost :支持域名或主机名来表示代理节点
//vport :支持IP和端口来表示代理节点
cache_peer 192.168.60.44 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.60.112 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
//parent :代表为父节点,上下关系,非平级关系
//80 :代理内部web服务器的80端口
//0 :没有使用icp(电信运营商),表示就一台squid服务器
//no-query :不做查询操作,直接获取数据
//originserver :指定是源服务器
//round-robin :指定 squid 通过轮询方式将请求分发到其中一台父节点
//max_conn :指定最大连接数
//weight : 指定权重
//name :设置别名
cache_peer_domain web1 web2 www.kfc.com
表示对www.kfc.com的请求,squid向192.168.60.112和192.168.60.44的80端口发出请求
客户端向服务端(Squid反向代理服务器)请求数据,如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端:否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将应答缓存在本地,供下一个请求者使用。