您的位置:首页 > 运维架构 > 反向代理

varnish反向代理安装与配置

2014-08-11 12:10 288 查看
主机环境: rhel6 selinux and iptables disabled
实验主机: 192.168.2.36 varnish
192.168.2.46 apache
192.168.2.38 apache
框架图:




VCL 处理流程图:



处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。

1. 安装 http://repo.varnish-cache.org/redhat/varnish-3.0/el6/x86_64/ rpm -ivh varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
2. 配置
# vi /etc/varnish/default.vcl
###配置一个后端服务器
backend web1 {
.host = "192.168.0.188";
.port = "80";
}
###配置 varnish 服务端口
# vi /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
###查看缓存命中情况
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 start
在desktop46上安装httpd 并启动

#curl -I 192.168.2.36



未命中

#curl -I 192.168.2.36


命中

###通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$ #清除所有
# varnishadm ban.url /index.html #清除 index.html 页面缓存
# varnishadm ban.url /admin/$ #清除 admin 目录缓存
###定义多个不同域名站点的后端服务器



#当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据,
访问其他页面报错。




#service varnish reload
###定义负载均衡
#定义健康检查











#/etc/init.d/varnish reload

在desktop38上配置虚拟主机名vim /etc/httpd/conf/httpd.conf



在desktop38的/var/www/下创建web2目录在里面写一个测试文件



#/etc/init.d/httpd restart
然后测试:










###varnish cdn 推送平台 http://code.google.com/p/varnish-php-bansys/ 把这个解压到 desktop36 的/var/www/html/



然后编辑config.php
#只保留如下设置,其余注释掉



#编辑desktop36的httpd配置文件
#vim /etc/init.d/httpd/conf/httpd.conf
把监听端口改为 8080 不然就和varnish的端口起冲突
推送模式是http的话对varnish做如下配置:



#/etc/init.d/varnish reload
然后在firefox上测试:







OK!!

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