This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
pfwbged.buildout/templates/varnish.vcl.in

123 lines
2.4 KiB
Plaintext

# This is a basic VCL configuration file for varnish. See the vcl(7)
# man page for details on VCL syntax and semantics.
backend backend_0 {
.host = "${hosts:haproxy}";
.port = "${ports:haproxy}";
.connect_timeout = 0.4s;
.first_byte_timeout = 300s;
.between_bytes_timeout = 60s;
}
acl purge {
"localhost";
"127.0.0.1";
}
sub vcl_recv {
set req.grace = 120s;
set req.backend = backend_0;
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return(lookup);
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
/* Non-RFC2616 or CONNECT which is weird. */
return(pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
/* We only deal with GET and HEAD by default */
return(pass);
}
if (req.http.If-None-Match) {
return(pass);
}
if (req.url ~ "createObject") {
return(pass);
}
if (req.url ~ "openTrashcan") {
return(pass);
}
if (req.url ~ "closeTrashcan") {
return(pass);
}
if (req.url ~ "subsite-skin") {
return(pass);
}
if (req.url ~ "solgemafullcalendar_vars.js") {
return(pass);
}
if (req.url ~ "updated_search") {
return(pass);
}
remove req.http.Accept-Encoding;
return(lookup);
}
sub vcl_pipe {
# This is not necessary if you do not do any request rewriting.
set req.http.connection = "close";
}
sub vcl_hit {
if (req.request == "PURGE") {
purge_url(req.url);
error 200 "Purged";
}
if (!obj.cacheable) {
return(pass);
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache";
}
}
sub vcl_fetch {
set beresp.grace = 120s;
if (!beresp.cacheable) {
return(pass);
}
if (beresp.http.Set-Cookie) {
return(pass);
}
if (beresp.http.Cache-Control ~ "(private|no-cache|no-store)") {
return(pass);
}
if (beresp.http.Authorization && !beresp.http.Cache-Control ~ "public") {
return(pass);
}
if (beresp.http.Content-Type == "application/x-zope-edit") {
return(pass);
}
if (beresp.http.url ~ "subsite-skin") {
return(pass);
}
}