varnish是现在很流行的一个HTTP缓存加速解决方案,被广泛应用于各种大型网站,国外的一家在线报纸网站只用了5台varnish服务器换掉了原来的13台squid服务器,而且性能还有提升,可见varnish的强大之处。varnish是基于内存的缓存加速。 

YUM安装方法:

1.系统需求
最好是全新系统,我在centos6X64安装,yum安装支持centos5或6,安装前先把httpd卸载,执行: yum remove httpd

2.开始安装执行
# rpm --nosignature -i
http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm
# yum install varnish
大约一分钟即可安装完毕

3.配置varnish: 
只需要编辑一个文件,在 /etc/varnish/default.vcl  以下是基本范例:
backend web1 {                  #web1为定义名称随便写
.host = "你的源站ip";          #你需要加速的网站ip
.port = "80";                         #你的源站端口,默认80
.connect_timeout = 1s;      #连接超时时间
.first_byte_timeout = 5s;
.between_bytes_timeout = 2s;
}
backend web2 {                     #这里是第二个源站
.host = "你的第二个源站ip";
.port = "80";
.connect_timeout = 1s;
.first_byte_timeout = 5s;
.between_bytes_timeout = 2s;
}
#acl
acl purge {
"localhost";
"127.0.0.1";
"192.168.169.0"/24;
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge)
{
error 405 "Not allowed.";
}
return(lookup);
}
if (req.http.host ~ "^google.com") {                  #web1对应的域名
set req.backend = web1;}
elseif (req.http.host ~ "^(www)|(my).baidu.com") {        #web2对应的域名
set req.backend = web2;}
else {
error 404 "Caesar's cache-server ! QQ: 189717888"; #如果域名不在以上范围的出错提示
#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 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
}

4.启动varnish
varnishd -f /etc/varnish/default.vcl -s malloc,1G -T127.0.0.1:2000
其中1G为varnish使用内存大小,根据自己情况定,一般为物理内存的三分之一大小
结束varnish命令:
pkill varnish

5.解析你的域名到varnish服务器

6.HAVE FUN !