Created
December 22, 2016 17:21
-
-
Save tlemburg/ee448dcd6ffab3dcde87b89e927ace2a to your computer and use it in GitHub Desktop.
vcl file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# It does not do anything by default, delegating control to the | |
# builtin VCL. The builtin VCL is called when there is no explicit | |
# return statement. | |
# | |
# See the VCL chapters in the Users Guide at https://www.varnish-cache.org/docs/ | |
# and https://www.varnish-cache.org/trac/wiki/VCLExamples for more examples. | |
# Marker to tell the VCL compiler that this VCL has been adapted to the | |
# new 4.0 format. | |
vcl 4.0; | |
# Default backend definition. Set this to point to your content server. | |
backend default { | |
.host = "127.0.0.1"; | |
.port = "8080"; | |
} | |
acl purge { | |
"127.0.0.1"; | |
} | |
sub vcl_recv { | |
# Only allow PURGE requests from IP addresses in the 'purge' ACL. | |
if (req.method == "PURGE") { | |
if (!client.ip ~ purge) { | |
return (synth(405, "Not allowed.")); | |
} | |
return (purge); | |
} | |
# Only allow BAN requests from IP addresses in the 'purge' ACL. | |
if (req.method == "BAN") { | |
# Same ACL check as above: | |
if (!client.ip ~ purge) { | |
return (synth(403, "Not allowed.")); | |
} | |
# Logic for the ban, using the Cache-Tags header. For more info | |
# see https://github.com/geerlingguy/drupal-vm/issues/397. | |
if (req.http.Cache-Tags) { | |
ban("obj.http.Cache-Tags ~ " + req.http.Cache-Tags); | |
} | |
else { | |
return (synth(403, "Cache-Tags header missing.")); | |
} | |
# Throw a synthetic page so the request won't go to the backend. | |
return (synth(200, "Ban added.")); | |
} | |
// Remove has_js and Google Analytics __* cookies. | |
set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z_]+|_ga[a-z_]*|Drupal\.toolbar\.collapsed|UNL_Visitorchat_Session|unlAlertsData|wdn_important_notice)=[^;]*", ""); | |
// Remove a ";" prefix, if present. | |
set req.http.Cookie = regsub(req.http.Cookie, "^\s*", ""); | |
set req.http.Cookie = regsub(req.http.Cookie, "\s*$", ""); | |
set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); | |
// Remove empty cookies. | |
if (req.http.Cookie ~ "^\s*$") { | |
unset req.http.Cookie; | |
} | |
} | |
sub vcl_backend_response { | |
set beresp.http.X-Url = bereq.url; | |
set beresp.http.X-Host = bereq.http.host; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment