forked from ISTI-ansible-roles/ansible-roles
library/roles/varnish-cache: Remove the varnish configuration's template. It has to be managed by a local role.
This commit is contained in:
parent
b9d50790cd
commit
ea27bed983
|
@ -1,162 +0,0 @@
|
||||||
# This is a basic VCL configuration file for varnish. See the vcl(7)
|
|
||||||
# man page for details on VCL syntax and semantics.
|
|
||||||
#
|
|
||||||
# Default backend definition. Set this to point to your content
|
|
||||||
# server.
|
|
||||||
#
|
|
||||||
vcl 4.0;
|
|
||||||
import directors;
|
|
||||||
import std;
|
|
||||||
#
|
|
||||||
# Generic probe used by all the backends
|
|
||||||
probe healthcheck {
|
|
||||||
.url = "/index.php";
|
|
||||||
.interval = 250ms;
|
|
||||||
.timeout = 10s;
|
|
||||||
.window = 1;
|
|
||||||
.threshold = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Application backends
|
|
||||||
# They are also a fallback for the static content
|
|
||||||
#
|
|
||||||
backend a5_dev {
|
|
||||||
.host = "127.0.0.1";
|
|
||||||
.port = "80";
|
|
||||||
.probe = healthcheck;
|
|
||||||
.connect_timeout = {{ varnish_static_c_timeout }};
|
|
||||||
.first_byte_timeout = {{ varnish_static_first_byte_timeout }};
|
|
||||||
.between_bytes_timeout = {{ varnish_static_between_bytes_timeout }};
|
|
||||||
.max_connections = {{ varnish_static_max_connections }};
|
|
||||||
}
|
|
||||||
|
|
||||||
sub vcl_init {
|
|
||||||
new a5dev_cluster = directors.hash();
|
|
||||||
a5dev_cluster.add_backend(a5_dev, 1.0);
|
|
||||||
|
|
||||||
new a5admin_cluster = directors.fallback();
|
|
||||||
a5admin_cluster.add_backend(a5_dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Respond to incoming requests.
|
|
||||||
sub vcl_recv {
|
|
||||||
# Add a unique header containing the client address
|
|
||||||
# NB: it's the default, no need to explicitly add the X-Forwarded-For header
|
|
||||||
# unset req.http.X-Forwarded-For;
|
|
||||||
# set req.http.X-Forwarded-For = client.ip;
|
|
||||||
if (req.url ~ "^/backend/" || req.url ~ "^/admin(.*)" || req.url ~ "(?i)\.gupld" ) {
|
|
||||||
set req.backend_hint = a5admin_cluster.backend();
|
|
||||||
return(pipe);
|
|
||||||
}
|
|
||||||
if (req.url ~ "^/cloud-assets/" && !req.url ~ "(?i)\.nocache\.(.*)" ) {
|
|
||||||
set req.backend_hint = a5dev_cluster.backend(client.identity);
|
|
||||||
unset req.http.Cookie;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
set req.backend_hint = a5dev_cluster.backend(client.identity);
|
|
||||||
}
|
|
||||||
|
|
||||||
# Always cache the following file types for all users.
|
|
||||||
if (req.url ~ "(?i)\.(avi|mpeg|webm|vorbis|vob|mp4|divx|mp3|flac|ogg|ogv|png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?[a-z0-9]+)?$" && !req.url ~ "(?i)\.nocache\.(.*)") {
|
|
||||||
unset req.http.Cookie;
|
|
||||||
# return(hash);
|
|
||||||
}
|
|
||||||
# Handle compression correctly. Different browsers send different
|
|
||||||
# "Accept-Encoding" headers, even though they mostly all support the same
|
|
||||||
# compression mechanisms. By consolidating these compression headers into
|
|
||||||
# a consistent format, we can reduce the size of the cache and get more hits.
|
|
||||||
# @see: http:// varnish.projects.linpro.no/wiki/FAQ/Compression
|
|
||||||
if (req.http.Accept-Encoding) {
|
|
||||||
if (req.http.Accept-Encoding ~ "gzip") {
|
|
||||||
# If the browser supports it, we'll use gzip.
|
|
||||||
set req.http.Accept-Encoding = "gzip";
|
|
||||||
}
|
|
||||||
else if (req.http.Accept-Encoding ~ "deflate") {
|
|
||||||
# Next, try deflate if it is supported.
|
|
||||||
set req.http.Accept-Encoding = "deflate";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
# Unknown algorithm. Remove it and send unencoded.
|
|
||||||
unset req.http.Accept-Encoding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Code determining what to do when serving items from the backend servers.
|
|
||||||
sub vcl_backend_response {
|
|
||||||
if (beresp.http.X-No-Cache) {
|
|
||||||
set beresp.uncacheable = true;
|
|
||||||
set beresp.ttl = 120s;
|
|
||||||
return (deliver);
|
|
||||||
}
|
|
||||||
set beresp.http.X-Backend = beresp.backend.name;
|
|
||||||
# Don't cache all errors
|
|
||||||
if(beresp.status >= 300 && beresp.status <= 399) {
|
|
||||||
set beresp.ttl = 5m;
|
|
||||||
}
|
|
||||||
if(beresp.status >= 399 && beresp.status <= 403) {
|
|
||||||
set beresp.uncacheable = true;
|
|
||||||
set beresp.ttl = 10s;
|
|
||||||
return(deliver);
|
|
||||||
}
|
|
||||||
if (beresp.status == 404) {
|
|
||||||
set beresp.ttl = 30m;
|
|
||||||
}
|
|
||||||
if (beresp.status >= 405) {
|
|
||||||
set beresp.uncacheable = true;
|
|
||||||
set beresp.ttl = 0s;
|
|
||||||
return(deliver);
|
|
||||||
}
|
|
||||||
if (beresp.http.Content-Length && beresp.http.Content-Length ~ "^[0-9]$") {
|
|
||||||
#log "TooSmall: Pass on ( " req.url " ) small objects: " beresp.http.Content-Length ;
|
|
||||||
set beresp.uncacheable = true;
|
|
||||||
unset beresp.http.expires;
|
|
||||||
set beresp.ttl = 0s;
|
|
||||||
return(deliver);
|
|
||||||
}
|
|
||||||
if(bereq.url == "/robots.txt") {
|
|
||||||
# Robots.txt is updated rarely and should be cached for a lot of time
|
|
||||||
# Ban manually as required
|
|
||||||
set beresp.ttl = 1d;
|
|
||||||
}
|
|
||||||
if ((bereq.url ~ "^/cloud-assets/" || bereq.url ~ "(?i)\.(avi|mpeg|webm|vorbis|vob|mp4|divx|mp3|flac|ogg|ogv|png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?[a-z0-9]+)?$") && !bereq.url ~ "(?i)\.nocache\.(.*)") {
|
|
||||||
unset beresp.http.expires;
|
|
||||||
unset beresp.http.set-cookie;
|
|
||||||
/* Set the clients TTL on this object */
|
|
||||||
set beresp.http.cache-control = "max-age=604800";
|
|
||||||
/* marker for vcl_deliver to reset Age: */
|
|
||||||
set beresp.http.magicmarker = "1";
|
|
||||||
set beresp.ttl = 6w;
|
|
||||||
}
|
|
||||||
set beresp.grace = 6h;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub vcl_hit {
|
|
||||||
if (obj.ttl >= 0s) {
|
|
||||||
// A pure unadultered hit, deliver it
|
|
||||||
return (deliver);
|
|
||||||
}
|
|
||||||
if (!std.healthy(req.backend_hint) && (obj.ttl + obj.grace > 0s)) {
|
|
||||||
return (deliver);
|
|
||||||
} else {
|
|
||||||
return (fetch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub vcl_deliver {
|
|
||||||
if (resp.http.magicmarker) {
|
|
||||||
/* Remove the magic marker */
|
|
||||||
unset resp.http.magicmarker;
|
|
||||||
|
|
||||||
/* By definition we have a fresh object */
|
|
||||||
set resp.http.age = "0";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub vcl_pipe {
|
|
||||||
# http://www.varnish-cache.org/ticket/451
|
|
||||||
# This forces every pipe request to be the first one.
|
|
||||||
set bereq.http.connection = "close";
|
|
||||||
}
|
|
Loading…
Reference in New Issue