网站加速器 | varnish实现cdn网页推送
CDN推送详解
vm1
1,varnish服务器的启动,安装并启动httpd服务
2,varnish服务占用了80端口,所以修改httpd服务的端口为8080 /etc/httpd/conf/httpd.conf
Listen 8080
3,cdn推送平台是php语言写的,安装php
4,解压bansys.zip
[[email protected] ~]# yum install -y unzip
[[email protected] ~]# uzip bansys.zip -d /var/www/html -d指定解压路径为httpd的默认发布目录
(mv * ..是把/var/www/html/bansys目录下面的内容移动到上层目录,方便直接通过ip访问,后面不用加/index.php)
5,修改php配置文件config.php
//可定义多个主机列表
$var_group1 = array(
'host' => array('172.25.28.1'), varnish的cdn推送平台ip
'port' => '80', 修改端口为varnish的80端口
);
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1, 绑定到域,第一个阵列
);
格式如下
重启httpd服务
6,访问测试
地址栏直接输入varnish服务器ip:8080访问cdn推送平台
推送时选择HTTP,否则会出现推送错误
推送可以是一个页面/index.html,也可以是一个目录/images*,不用写www.westos.com,上面cdn群组已经写了,也可以是一个url地址http://www.westos.org/index.html
7,修改varnish配置文件(default.vcl文件里面有lb和westos两个label,注意名字随意,但是不要冲突)
/etc/varnish/default.vcl
设置访问控制
acl westos {
"127.0.0.1"; #设置访问控制,本机回环接口
"172.25.28.0"/24; #这里写的是网段而不是ip
}
if (!client.ip ~ westos) { 如果客户端的ip不是westos里面的,那么405报错
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
重新加载varnish服务
8,访问测试
varnish服务器ip:8080访问,因为没有在本机做解析,而推送测试需要用域名,因为在varnish里面写了,
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";
}
只有域名有作用,ip什么的都会出现404报错
注意:推送之后刷新测试页面是看不到结果的,因为浏览器和操作系统都有缓存,用curl命令可以直接访问页面,curl不存在浏览器和操作系统缓存的干扰