varnish
来源:互联网 发布:idm下载器for mac 编辑:程序博客网 时间:2024/04/29 02:35
1.安装(实验环境rhel6.5)
yum localinstall -y varnish-3.0.3-1.el6.x86_64.rpm varnish-libs-3.0.3-1.el6.x86_64.rpm
2.配置
server1端
###配置一个后端服务器
# vi /etc/varnish/default.vcl
backend web1 {
.host = "172.25.4.2";
.port = "80";
}
###配置 varnish 服务端口
# vi /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
# service varnish start
server2,3端
yum install httpd -y
vim /var/www/html/index.html
</h1>server2</h1>
server httpd start
浏览器测试(访问172.25.4.1):
###查看缓存命中情况
# vi /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);
}
# service varnish reload
###测试缓存命中
# curl -I 172.25.4.1
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Thu, 20 Jul 2017 02:12:48 GMT
ETag: "20221-11-554b648f14601"
Content-Type: text/html; charset=UTF-8
Content-Length: 17
Accept-Ranges: bytes
Date: Thu, 20 Jul 2017 02:26:12 GMT
X-Varnish: 151548359
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS from westos cache #未命中
# curl -I 172.25.4.1
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Thu, 20 Jul 2017 02:12:48 GMT
ETag: "20221-11-554b648f14601"
Content-Type: text/html; charset=UTF-8
Content-Length: 17
Accept-Ranges: bytes
Date: Thu, 20 Jul 2017 02:27:57 GMT
X-Varnish: 151548360 151548359
Age: 105
Via: 1.1 varnish
Connection: keep-alive
X-Cache: HIT from westos cache #命中
### 通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$ #清除所有
测试:
# varnishadm ban.url /index.html #清除 index.html
页面缓存
# varnishadm ban.url /admin/$ #清除 admin 目录缓存
###定义多个不同域名站点的后端服务器
# vi /etc/varnish/default.vcl
backend web1 {
.host = "172.25.4.2";
.port = "80";
}
backend web2 {
.host = "172.25.4.3";
.port = "80";
}
#当访问www.westos.org域名时从web1上取数据,访问 bbs.westos.org 域名时到web2取数据,访问其他页面报错。
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}
server3的测试页:
# service varnish reload
测试:
访问www.westos.org
访问bbs.westos.org
访问其他页面
#定义varnish 的虚拟主机实现负载均衡
在server1端
vi /etc/varnish/default.vcl
backend web1 {
.host = "192.168.0.2";
.port = "80";
}
backend web2 {
.host = "192.168.0.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 = web1;
} else {
error 404 "westos cache";
}
}
在sevver2端
vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName server2
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/bbs
ServerName bbs.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/westos
ServerName www.westos.org
</VirtualHost>
mkdir /www/bbs -p
vim /www/bbs/index.html ##建立测试页
mkdir /www/westos -p
vim /www/westos/index.html
测试:
访问www.westos.org会实现web1与web2的轮询
访问bbs.westos.org
###varnish cdn 推送平台
用httpd访问,需要在server1上修改httpd的配置文件,把80访问端口改成8080,以免冲突
vim /etc/httpd/conf/httpd.conf
http://code.google.com/p/varnish-php-bansys/
#需要安装 php 支持
unzip bansys.zip -d /var/www/html
vi /var/www/html/bansys/config.php
#只保留如下设置,其余注释掉
<?php
$var_group1 = array(
'host' => array('172.25.4.1'),
'port' => '80',
);
//varnish 群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);
//varnish 版本//2.x 和 3.x 推送命令不一样
$VAR_VERSION = "3";
?>
#bansys 有两种工作模式,分别是:telnet 和 http 模式。
#telnet 模式需要关闭 varnish 服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。
#如果是 http 模式需要对 varnish 做以下设置:
# vi /etc/varnish/default.vcl
acl westos {
#设置访问控制
"127.0.0.1";
"172.25.4.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";
}
}
# service varnish reload
在浏览器上访问172.25.4.1:8080
测试:
- Varnish
- Varnish
- Varnish
- varnish
- varnish
- Varnish
- varnish
- varnish
- varnish
- Varnish
- varnish
- varnish
- varnish
- varnish
- varnish
- Varnish
- varnish
- VARNISH
- spyder 护眼背景
- 卸载CDH5
- 使用VS时遇到的错误
- 程序员的婚后生活
- 数学规划
- varnish
- android xutils HtttpUtis 网络请求使用
- C++类内存分布
- fiddler4使用教程
- 要想成为一名高级java工程师,你需要学什么
- Python 函数
- C++ float乘法怎样截取6位小数
- nginx -s stop and -s quit 有什么区别?
- elasticsearch学习总结(三) API的使用范例4