Last active
December 19, 2018 21:25
-
-
Save iansheridan/f47113ccd080919515ce to your computer and use it in GitHub Desktop.
Sample Varnish VCL configs for Elastic Beanstalk
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
# Source: https://forums.aws.amazon.com/thread.jspa?messageID=482679&tstart=0#482679 | |
packages: | |
yum: | |
varnish: [] | |
files: | |
"/etc/varnish/default.vcl" : | |
owner: root | |
group: root | |
content: | | |
backend default { | |
.host = "127.0.0.1"; | |
.port = "8080"; | |
} | |
acl purge { | |
"127.0.0.1"; | |
"localhost"; | |
} | |
sub vcl_recv { | |
if (req.request == "PURGE") { | |
if (!client.ip ~ purge) { | |
error 405 "Not allowed."; | |
} | |
return (lookup); | |
} | |
if (req.url ~ "\.(gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") { | |
unset req.http.cookie; | |
set req.url = regsub(req.url, "\?.*$", ""); | |
} | |
if (req.url ~ "\?(utm_(campaign|medium|source|term)|adParams|client|cx|eid|fbid|feed|ref(id|src)?|v(er|iew))=") { | |
set req.url = regsub(req.url, "\?.*$", ""); | |
} | |
if (req.url ~ "wp-(login|admin)" || req.url ~ "preview=true" || req.url ~ "xmlrpc.php") { | |
return (pass); | |
} | |
if (req.http.cookie) { | |
if (req.http.cookie ~ "(wordpress_|wp-settings-)") { | |
return(pass); | |
} else { | |
unset req.http.cookie; | |
} | |
} | |
} | |
sub vcl_fetch { | |
if ( (!(req.url ~ "(wp-(login|admin)|login)")) || (req.request == "GET") ) { | |
unset beresp.http.set-cookie; | |
set beresp.ttl = 1h; | |
} | |
if (req.url ~ "\.(gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") { | |
set beresp.ttl = 365d; | |
} | |
} | |
sub vcl_deliver { | |
# multi-server webfarm? set a variable here so you can check | |
# the headers to see which frontend served the request | |
# set resp.http.X-Server = "server-01"; | |
if (obj.hits > 0) { | |
set resp.http.X-Cache = "HIT"; | |
} else { | |
set resp.http.X-Cache = "MISS"; | |
} | |
} | |
sub vcl_hit { | |
if (req.request == "PURGE") { | |
purge; | |
error 200 "OK"; | |
} | |
} | |
sub vcl_miss { | |
if (req.request == "PURGE") { | |
purge; | |
error 404 "Not cached"; | |
} | |
} | |
commands: | |
# configure apache | |
010_httpd.conf : | |
command: "sed -i 's/Listen 8080/Listen 80/g' /etc/httpd/conf/httpd.conf" | |
011_httpd.conf : | |
command: "sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf" | |
# configure varnish | |
040_varnish: | |
command: "sed -i 's/VARNISH_LISTEN_PORT=6081/VARNISH_LISTEN_PORT=80/g' /etc/sysconfig/varnish" | |
041_varnish: | |
command: "sed -i 's/VARNISH_ADMIN_LISTEN_PORT=6082/VARNISH_ADMIN_LISTEN_PORT=2000/g' /etc/sysconfig/varnish" | |
services: | |
sysvinit: | |
varnish: | |
enabled: true | |
ensureRunning: true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment