一、什么是CDN推送
当后端服务器中的DNS有更新的时候,在varnish的缓存中应该及时地同步后端服务器中的内容。相当于清空varnish中的缓存,当下一次进行访问时,直接从服务器中获取新的内容。
二、配置过程
1、在varnish(server1)中安装httpd服务,并编辑httpd配置文件,将136行的端口号修改为8080(因为varnish服务器已经占用了80端口)
2、安装php
---> yum install php -y
3、安装bansys.zip压缩包。(压缩到/var/www/html目录下)
---> unzip bansys.zip -d /var/www/html
---> mv /var/www/html/* /var/www/html
---> vim /vat/www/html/bansys/config.php
$var_group1 = array(
'host' => array('172.25.2.1'), # 定义主机列表ip和端口号
'port' => '80',
);
//varnish 群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.xniu.com' => $var_group1, # 绑定varnish主机
);
//varnish 版本//2.x 和 3.x 推送命令不一样
$VAR_VERSION = "3"; # varnish版本为3
?>
4、在server1主机中打开httpd服务,在物理主机中输入172.25.2.1:8080可以显示CDN推送的界面
5、编写varnish默认文件
---> vim /etc/varnish/default # 添加即可
#设置访问控制
"127.0.0.1";
"172.25.2.0"/24; # varnish主机的子网掩码
}
.host = "172.25.2.2";
.port = "80";
}
backend web2 {
.host = "172.25.2.3";
.port = "80";
}
director lb round-robin {
{ .backend = web1; }
{ .backend = web2; }
#把多个后端聚合为一个组,并检测后端健康状况
}
# 此时需要注释掉pass(防止直接到服务器端获取)
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ xniu) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
}
---> /etc/init.d/varnish reload
6、在浏览器中进行测试(修改varnish的缓存后的结果是不一样的。此时我们选择http方式 )
---> curl -I www.xniu.com # 对缓存时间进行查看
1)首先,通过网页访问一个后端服务器。(此时,varnish加速器对网页进行缓存;之后进行刷新,是不会变化的)
2)CDN推送后(到达推送界面,有推送完成提示后,点击返回)。