Varnish是一款高性能的开源HTTP加速器,编译方面这里不多说了。所以自己也采用这个加速器。结果表明还是蛮不错的。现将配置说明如下:
backend painiu {
.host = "113.107.103.XXX";
.port = "81";
.connect_timeout = 100s;
.first_byte_timeout = 500s;
.between_bytes_timeout = 200s;
}
acl purge {
"113.107.103.XXX";
"127.0.0.1";
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
lookup;
}
#unset req.http.X-Varnish;
#unset req.http.Via;
#unset req.http.Accept-Encoding;
#unset req.http.Vary;
if (req.http.host ~ "^(.*).painiu.com") {
set req.backend = painiu;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
elseif (req.http.host ~ "^(.*).hi51.cn") {
set req.backend = painiu;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
elseif (req.http.host ~ "^hi51.cn") {
set req.backend = painiu;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
elseif (req.http.host ~ "^(.*).365.com") {
set req.backend = painiu;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
elseif (req.http.host ~ "^365.com") {
set req.backend = painiu;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
elseif (req.http.host ~ "^painiu.com") {
set req.backend = painiu;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
else {
error 404 "Painiu Cache Server";
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.";
}
}
sub vcl_fetch {
if (req.request == "GET" && req.url ~ "\.(txt|js|html|htm|css|jpg|gif|png|swf)($|\?)") {
set obj.ttl = 3600s;
}
else {
set obj.ttl = 0s;
}
}
sub vcl_deliver {
remove resp.http.X-Varnish;
remove resp.http.Via;
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}

文章评论