您的位置:首页 > 其它

cdn_varnish

2018-01-20 22:21 99 查看

下载安装

安装varnish需要两个包,一个是安装包一个是他的库文件,如下:

varnish-3.0.5-1.el6.x86_64.rpm

varnish-libs-3.0.5-1.el6.x86_64.rpm

开启varnish

/etc/init.d/varnish start

修改访问端口

建议修改为80端口,这样浏览器就可以直接访问

配置文件在

vim /etc/sysconfig/varnish

VARNISH_LISTEN_PORT=80

找到上面那行,修改为80端口



还有一些其他关于varnish本身的默认参数,可以根据需要也去修改

修改后台服务器ip

配置文件为

/etc/varnish/default.vcl

加入如下所示代码

backend default {
.host = "172.25.49.2";
.port = "80";
}


表示后台服务器的ip是172.25.49.2

访问端口为80

设置完成后重新加载配置

/etc/init.d/varnish reload

测试

在172.25.49.2开启http服务,随意写一个默认的网页

在测试机上修改本地解析

/etc/hosts

在测试机浏览器上输入url,就可以通过varnish访问172.25.49.2上的http服务,但是效果不明显。

使测试效果明显

在/etc/varnish/default.vcl加入如下代码

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);
}


表示在varnish缓存中寻找需要访问的数据

若找到了,则返回 HIT from westos cache

若没有找到就返回 MISS from westos cache

完成后需要重新加载配置

/etc/init.d/varnish reload

再测试的时候,在测试机的shell中,输入命令

curl -I www.westos.org

即可查看是否命中。

负载均衡

一般来说,服务器都是集群,所以一般访问都是通过特定的算法计算,然后让varnish通过算法对访问进行控制

backend web1 {
.host = "172.25.49.2";
.port = "80";
}
backend web2 {
.host = "172.25.49.3";
.port = "80";
}


当访问的是web1时,去访问2服务器,是web2时,访问3服务器

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);
}


表示在varnish缓存中寻找需要访问的数据

若找到了,则返回 HIT from westos cache

若没有找到就返回 MISS from westos cache

director lb round-robin {
{.backend = web1;}
{.backend = web2;}
}


在lb中有web1和web2两个服务器代理,通过rr轮回进行访问

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";
}
}


当浏览器访问的是www.westos.org或.westos.org时,找lb这个代理,当是bbs.westos.org时,访问web2这个代理

其他的都是错误的

Varnish的推送更新

网络上有各种各样的推送更新系统,本博客选择了一个来源于网络的php代码,所以在服务器上需要安装php,推送系统使用的http协议,所以要安装http服务,http默认使用的80端口,但varnish已经占用了80端口,所以需要改变http的服务端口,

下载安装所需要的php代码,然后修改配置文件,具体

如下,配置文件放在http的默认发布目录下。

<?php
//varnish主机列表
//可定义多个主机列表
$var_group1 = array(
'host' => array('172.25.49.1'),
'port' => '80',
);
//varnish群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);
//varnish版本
//2.x和3.x推送命令不一样
$VAR_VERSION = "3";
?>


完成后,重启http服务

修改varnish 的配置文件,主要加上访问控制策略

acl redhat {
"127.0.0.1";
"172.25.49.0"/24;
}


表示redhat这个访问策略,在本机和172.25.49.0/24这个网段可以修改。

redhat的策略如下

if (req.request == "BAN") {
if (!client.ip ~ redhat) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}


完成后,重启varnish就可以使用

测试:

在测试机上输入url,就可以显示



就可以推送了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cdn