web界面批量清除缓存
CDN推送:当后端服务器中有更新时,在varnish的缓存中应该及时同步后端服务中的内容
配置过程:
1.server1
安装httpd,并编辑httpd配置文件
vim /etc/httpd/conf/httpd.conf
将136行的端口号修改为8080(因为varnish服务已经占用80端口)
下载php(显示页面)
下载unzip(解压安装包)
yum install php unzip httpd -y
重起服务
/etc/init.d/httpd restart
2.在server1中解压bansys.zip到/var/www/html(指定解压目录-d)
unzip bansys.zip -d /var/www/html/
mv /var/www/html/bansys/* /var/www/html
3.编辑config.php
cd /var/www/html/
vim config.php
4.编辑真机的解析
vim /etc/hosts
写入:
172.25.5.1 server1 www.westos.org bbs.westos.org
172.25.5.3 server3
6.打开浏览器,浏览器中输入172.25.5.1:8080,出现CDN推送管理页面
7.编写varnish的默认文件vim /etc/varnish/default.vcl
[root@server1 html]# vim /etc/varnish/default.vcl
#设置访问控制,即白名单,允许本机和172.25.64网段和推送
acl westos{
"127.0.0.1"; ##允许本机访问
"172.25.5.0"/24; ##允许172.25.5网段的所有主机访问
}
sub vcl_recv{
if(req.request == "BAN"){
if(!client.ip ~ westos){
error 405 "Not allowed.";
}
ban("req.url ~" + req.url);
error 200 "ban added";
}
}
backend web1 {
.host = "172.25.5.2";
.port = "80";
}
backend web2 {
.host = "172.25.5.3";
.port = "80";
}
director lb round-robin {
{ .backend = web1;}
{ .backend = web2;}
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
#return (pass);
}elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
}
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos.cache";
} else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
8.测试
curl -I www.westos.org #第一次miss,则没有缓存到
curl -I www.westos.org #第二次hit,缓存成功(一直为和hit)
CDN推送
推送模式为html,写入推送页面,点击确认提交
再次测试,则为miss(表示缓存已经清除)