Squid反向代理
将不同的URL请求分发到后台不同的Web服务器上,通过squid反向代理,可以加速网站的访问速度,同时互联网用户只能看到反向代理服务器的地址,加强网站的访问安全
Squid反向代理原理
Squid反向代理服务器位于本地Web服务器和Internet之间,客户端请求访问Web服务器时,DNS将访问的域名解析为Squid反向代理服务器的IP地址,客户端将访问Squid代理服务器。如果Squid反向代理服务器缓存了该请求的资源,则将该请求的资源返回给客户端,否则反向代理服务器将向后台的Web服务器请求资源,然后将应答资源返回给客户端,同时也将该资源在本地缓存一份,供下一个请求使用
实验环境 :
代理服务器IP(CnetOS7):192.168.94.11(NAT) 192.168.111.11(VMnet3)
客户端IP(Windows):192.168.111.22(VMnet3)
真实服务器1(CnetOS7):192.168.94.22(NAT)
真实服务器2(CnetOS7):192.168.94.33(NAT)
之前做的透明代理的时候做的防火墙策略 , 要把策略清一下 , 把备份的配置文件还原 , 不然测试会出问题
[root@squit squid]# vim /etc/squid.conf # 定义两个个基于域名的控制列表,分别命名为web1,web2 acl web1 dstdomain www.damowang.cn acl web2 dstdomain www.damowang.cn
# 允许以web1,web2为目标域名的访问 http_access allow web1 web2
# 将端口监听在 192.168.94.11的80端口上,accel 指启用加速模式,vhost,vport用于转发请求 http_port 192.168.94.11:80 accel vhost vport
# cache_peer 指定后端服务器地址,80 为后端服务端口,0 为 ICP 端口号(多个 Squid 时用),originserver 指定资源服务器,round-robin指使用轮询方式,weight指的是权重,自由分配,name 指定一个别名 cache_peer 192.168.94.22 parent 80 0 no-query originserver round-robin weight=1 name=web1 cache_peer 192.168.94.33 parent 80 0 no-query originserver round-robin weight=1 name=web2
cache_peer_domain web1 web2 www.damowang.cn # 再4版本之前是用于域名轮询的 , 现在完全通过访问控制来实现 , 如果加上这句 , 检查语法时会报错
如果用的是新版本的squid 这是需要注意的
配置Web服务器
[root@web1 ~]# yum -y install httpd [root@web1 ~]# systemctl start httpd [root@web1 ~]# echo "<h1>Squid-Web1</h1>" > /var/www/html/index.html [root@web2 ~]# yum -y install httpd [root@web2 ~]# systemctl start httpd [root@web2 ~]# echo "<h1>Squid-Web2</h1>" > /var/www/html/index.html
Windows配置 , 测试
客户实际访问的是代理服务器 , 并不知道真实Web服务器的IP