实现广播清缓存
#############server1中#########
需要yum install php http unzip
在http中定义多个虚拟主机
/etc/httpd/conf/http.conf
NameVirtualHost *:80
改
Listen 8080
因为缓存server2 3的varnishi 用了80端口
unzip bansys.zip
cd bansys
mv * /var/www/html/
/etc/init.d/httpd start
vim /etc/varnish/default.vcl
acl westos {
"127.0.0.1";
"172.25.11.0"/24;
}
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.11.2";
.port = "80";
}
backend web2 {
.host = "172.25.11.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 HZP cache";
}
else{
set resp.http.X-Cache="MISS from HZP cache";
}
return (deliver);
}
vim /var/www/html/config.php
删掉下面以上的所有内容 除了开头
//varnish主机列表
//可定义多个主机列表
$var_group1 = array(
'host' => array('172.25.11.1'),
'port' => '8080',
);
//varnish群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);
###########server3
vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>
写好各自index.html
mv A ../ 移动到上一目录
真机访问 172.25.11.1:8080
在里面写 .* 或者 /index.html 推送
实现清除CDN缓存
acl westos {
"127.0.0.1";
"172.25.11.0"/24;
}
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.11.2";
.port = "80";
}
backend web2 {
.host = "172.25.11.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;
} 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 HZP cache";
}
else{
set resp.http.X-Cache="MISS from HZP cache";
}
return (deliver);
}
其中有个错误
##################对的
#sub vcl_recv {
# if(req.request == "BAN") {
# if (!client.ip ~ westos) {
# error 405 "Not allowed";
# }
# ban("req.url ~ " + req.url);
# error 200 "ban added";
# } #对
#}
##################错的
#sub vcl_recv {
# if(req.request == "BAN") {
# if(!client.ip ~ westos) {
# error 405 "Not Allowed";
# } #erroe
#
# ban("req.url ~"+req.url);
# error 200 "ban added";
# }
#}
#########修改 写到一起 vcl_recv
sub vcl_recv {
if(req.request == "BAN") {
if(!client.ip ~ westos) {
error 405 "Not Allowed";
}
ban("req.url ~"+req.url);
error 200 "ban added";
}
if(req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
}
elsif(req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else{
error 404 "westos cache";
}
}