Varnish 安装与配置实例教程



Varnish 安装与配置实例教程。

安装pcre,varnish需要pcre的支持
可以yum -y install pcre pcre-devel
也可以下载源码包安装:
#tar zxvf pcre-7.9.tar.gz
#./configure -prefix=/usr/local/pcre/
#make && make install
2.下载varnish源码包:http://varnish-cache.org
#tar zxvf varnish-2.1.2.tar.gz
#cd varnish-2.1.2
#export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
#./configure –prefix=/usr/local/varnish –enable-dependency-tracking –enable-debugging-symbols –enable-developer-warnings
#make
#make install
注:PKG_CONFIG_PATH是指定varnish查找pcre库的路径,如何pcre安装在其它的路径下,可以指定相应的路径即可!
3配置文件:vi /usr/local/varnish/etc/varnish/default.vcl
backend web1 {
.host = “192.168.1.242″;
.port = “80″;
}
acl purge {
“localhost”;
“127.0.0.1″;
“192.168.1.0″/24;
}
sub vcl_recv {
if (req.request == “PUGRE”) {
if (!client.ip ~ purge) {
error 405 “Not allowed”;
}
elseif (req.url ~ “\.(php|cgi)($|\?)”) {
return (pass);
}
else {
return (lookup);
}
}

if (req.http.host ~ “^(www.|email.)?web1.com”) {
set req.backend = web1;
}
if (req.http.host ~ “192.168.1.203″) {
set req.backend = web1;
}

if (req.request != “GET” && req.request != “HEAD”) {
return (pipe);
}
elseif (req.url ~ “\.(php|cgi)($|\?)”) {
return (pass);
}
return (lookup);
}
sub vcl_hit {
if (req.request == “PURGE”) {
set obj.ttl=0s;
error 200 “Purge”;
}
}
sub vcl_miss {
if (req.request == “PURGE”) {
error 404 “Not in cache”;
}
}
sub vcl_fetch {
if (
req.url ~ “\.(html|jpg|jpeg|bmp|tiff|ico|img|wmf)$”){
set beresp.ttl = 3s;
return (deliver);
}
if (
req.url ~ “\.(mp3|mp4|m4a|wav|rmvb|wmv)$”) {
set beresp.ttl = 10d;
return (deliver);
}
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-cache = “HIT”; (这里的回应客户端的请求头可以随便写:
set resp.http.zenghui = “Hello”;)
}
else {
set resp.http.X-cache = “MiSS”;
}
return (deliver);
}

4.启动
/usr/local/varnish/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80
-f 是指定配置文件所在的位置
-s 确定varnish使用的存储类型和存储的容量,(malloc是一个C函数,用于分配内存空间)
-T varnish有一个基于文本的管理接口,启动它的话可以在不停止varnish的情况下来管理 varnish。
-a 这一句的意思是制定varnish监听所有ip发给80端口的http请求
访问:http://192.168.1.203
我们可以通过:
curl -I http://www.web1.com/xx.html
如果出了:X-cache:HIT 说明命中 如果出现了,MISS说明没有命中
管理varnish缓存
清除缓存内容的命令格式如下:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:2000 purge.url <regexp>
列出最近清除的详细URL列表的命令如下:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:2000 purge.list
下面举例说明如何管理Varnish缓存内容
1.1 清除http://www.web1.com/aa.html的url地址
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:2000 purge.url /aa.html
1.2 批量清除http://www.web1.com/s*.html
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:2000 purge.url /s.*$
1.3 类似上面 http://www.web1.com/a/*.html
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:2000 purge.url^/.*$
如何要清除所有的URL
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:2000 purge.url^.*$