#backend default { #.host = "127.0.0.1"; #.port = "8080"; #}
backend s360_01 { .host = "192.168.0.114"; .port = "18286"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend s360_02 { .host = "192.168.0.115"; .port = "18286"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend swdj_01 { .host = "192.168.0.114"; .port = "8092"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend swdj_02 { .host = "192.168.0.115"; .port = "8092"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend bf_01 { .host = "192.168.0.111"; .port = "18282"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend bf_02 { .host = "192.168.0.112"; .port = "18282"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend zsoft_01 { .host = "192.168.0.111"; .port = "8090"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
backend zsoft_02 { .host = "192.168.0.112"; .port = "8090"; .probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; } }
director s360 random { {.backend = s360_01; .weight = 5;} {.backend = s360_02; .weight = 5;} }
director wdj random { {.backend = swdj_01; .weight = 5;} {.backend = swdj_02; .weight = 5;} }
director bf random { {.backend = bf_01; .weight = 5;} {.backend = bf_02; .weight = 5;} }
director zsoft random { {.backend = zsoft_01; .weight = 5;} {.backend = zsoft_02; .weight = 5;} }
acl local{ "localhost"; "127.0.0.1"; "192.168.0.0"/24; }
sub vcl_recv {
if(req.url ~ "^/s360/") { set req.backend = s360; }else if(req.url ~ "^/swdj/"){ set req.backend = wdj; }else if(req.url ~ "^/bf/"){ set req.backend = bf; }else if(req.url ~ "^/zsoft/"){ set req.backend = zsoft; #}else{ #set req.backend = default. }
if (req.http.x-forwarded-for) { set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip; } else { set req.http.X-Forwarded-For = client.ip; }
if (req.http.Accept-Encoding) { if (req.url ~ "\.(jpg|png|gif|jpeg|flv)" ) { remove req.http.Accept-Encoding; remove req.http.COOKIE; } else if (req.http.Accept-Encoding ~ "gzip") { set req.http.Accept-Encoding = "gzip"; } else if (req.http.Accept-Encoding ~ "deflate") { set req.http.Accept-Encoding = "deflate"; } else { remove req.http.Accept-Encoding; } }
if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { return (pipe); }
if (req.request != "GET" && req.request != "HEAD") { return (pass); }
if(req.http.Authenticate || req.http.Authorization) { return (pass); }
if(req.request == "PURGE"){ if(!client.ip ~ local){ error 405 "Not Allowed."; } return (lookup); }
if(req.request == "GET" && req.url ~ "\.(jpg|png|gif|swf|jpeg|ico|js|mp4|css)$"){ unset req.http.COOKIE; set req.url = regsub(req.url, "\?.*$", ""); }
set req.grace = 15s; return (lookup); }
sub vcl_pipe { return (pipe); }
sub vcl_pass { return (pass); }
sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); }
sub vcl_miss { if(req.request == "PURGE") { error 404 "not in cache."; } return (fetch); }
sub vcl_hit { if(req.request == "PURGE"){ purge; error 200 "purged"; } return (deliver); }
sub vcl_fetch {
if (beresp.http.Pragma ~"no-cache" || beresp.http.Cache-Control ~"no-cache" || beresp.http.Cache-Control ~"private") { return (deliver); }
if (beresp.status == 404 || beresp.status == 300){ error 404; }
if (req.request == "GET" && req.url ~ "^/s360(.*)$") { set beresp.ttl = 3600s; }
if (req.request == "GET" && req.url ~ "^/swdj(.*)$") { set beresp.ttl = 43200s; }
if (req.request == "GET" && req.url ~ "^/bf(.*)$") { set beresp.ttl = 43200s; }
if (req.request == "GET" && req.url ~ "^/zsoft(.*)$") { set beresp.ttl = 43200s; }
if (req.request == "GET" && req.url ~ ".(html|htm)$"){ set beresp.ttl = 1d; }
if (req.request == "GET" && req.url ~ "\.(png|xsl|xml|pdf|ppt|doc|docx|chm|rar|zip|bmp|jpeg|swf|ico|mp3|mp4|rmvb|ogg|mov|avi|wmv|swf|txt|png|gif|jpg|css|js|html|htm)$") { set beresp.ttl = 7d; }
set beresp.grace = 30m; return(deliver); }
sub vcl_deliver { set resp.http.x-hits = obj.hits; if(obj.hits > 0){ set resp.http.X-Cache = " HIT 360"; }else{ set resp.http.X-Cache = "MISS 360"; } unset resp.http.X-Powered-By; unset resp.http.Server; return (deliver); }
sub vcl_error { set obj.http.Content-Type = "text/html; charset=utf-8"; set obj.http.Retry-After = "5"; synthetic {" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Error "} + obj.status + " " + obj.response + {" "} + obj.response + {" Guru Meditation: XID: "} + req.xid + {"
Varnish cache server "}; return (deliver); }
sub vcl_init { return (ok); }
sub vcl_fini { return (ok); } |