CDN推送平台的搭建(图形化清理varnish代理服务器的缓存)
CDN推送: 当后端服务器中的内容有更新的时候,在varnish的缓存中应该及时的同步后端服务器中的内容。相当于清空varnish中的缓存,当下一次进行访问时,直接从服务器中获取新的内容。
在 server1(varnish服务器上)
1、安装服务:yum install -y unzip php httpd
2、unzip bansys.zip -d /var/www/html 下载banzip,然后解压,并安装到/var/www/html目录下,文件要直接暴露在/var/www/html目录中 == mv /var/www/html/bansys/ /var/www/html==*
3、编辑config.php写入被清理缓存的服务器信息
4、vim /etc/httpd/conf/httpd.conf
修改默认端口为8080并重启httpd systemctl start httpd,因为varnish已经占用了80端口。一个端口只能绑定一个服务或者说一个IP,否则端口被占用,会报错(服务无法启动)!
5、 在浏览器里面搜索:172.25.70.1:8080 ,选择HTTP
- bansys 有两种工作模式分别是:telnet 和 http 。
telnet模式需要关闭varnish服务管理端口的验证,注释掉/etc/sysconfig/varnish文件中的“-S ${VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。
http模式需要对 varnish 做以下设置:vim /etc/varnish/default.vcl
acl ranran {
"127.0.0.1"; #本机
"172.25.70.0"/24; #指定70网段的可以推送(有权限清理代理服务器上面的缓存)
}
sub vcl_recv {
if (req.method == "BAN") { # 如果采用推送方式是BAN
if (!client.ip ~ ranran) { # 如果客户端的IP不在ranran控制模块中,则不允许推送,并告知原因!
return(synth(405,"Purging not allowed for " + client.ip));
}
ban("req.url ~ " + req.url); # 匹配的话,就像命令行清除缓存一样来执行!
return(purge);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
6、在真机进行测试:
- 注释:return(pass),这个会一直清除缓存
(1)curl -I www.ranran.org
然后图形化清除缓存,输入.*,发送(清除所有缓存)
再次 curl -I www.ranran.org 又是miss
(2)curl -I www.ranran.org/index.html
然后图形化清除缓存,输入/index ,发送(清除/index缓存)
再次 curl -I www.ranran.org/index.html ,又是miss