Skip to content

Instantly share code, notes, and snippets.

@aondio
Created January 9, 2020 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aondio/63348bc4089ed90f7f82528b9997d49d to your computer and use it in GitHub Desktop.
Save aondio/63348bc4089ed90f7f82528b9997d49d to your computer and use it in GitHub Desktop.
vcl 4.0;
import http;
# We define the origin servers
# assumption they listen on port 80, please change it if not true
backend origin_a {
.host = "103.234.96.112";
.port = "80";
}
backend origin_b {
.host = "103.226.154.55";
.port = "80";
}
backend origin_c {
.host = "103.113.11.126";
.port = "80";
}
backend origin_d {
.host = "58.82.215.198";
.port = "80";
}
sub vcl_init {
new rr = directors.round_robin();
rr.add_backend(origin_a);
rr.add_backend(origin_b);
rr.add_backend(origin_c);
rr.add_backend(origin_d);
}
sub vcl_recv {
set req.backend_hint = rr.backend();
}
sub vcl_hash {
hash_data(req.url);
return (lookup);
}
sub vcl_hit {
set req.http.X-status = "HIT";
}
sub vcl_miss {
set req.http.X-status = "MISS";
# Prefetch
}
sub vcl_pass {
set req.http.X-status = "PASS";
}
sub vcl_backend_response {
set beresp.ttl = 120s;
set beresp.grace = 60s;
if (bereq.url exe;wmv;mp3;wma;ogg;swf;flv;mp4;avi;mpg;mpeg;f4v;rmvb;rm;3gp;img;cur;gif;png;jpe;ico;bmp;jpeg;jpg;rpm;deb;tar;gz;bin;bz2;zip;rar;ipa;apk;jar;sis;xap;msi;cab;7z;pdf;doc;docx;xls;xlsx;ppt;pptx;txt;css;js;wav) {
set beresp.ttl = 365d;
set beresp.grace = 24h;
}
unset beresp.http.X-Varnish;
unset beresp.http.Via;
# Retry on error
if (beresp.status >= 500) {
return (retry);
}
return (deliver);
}
# Retry on error
sub vcl_backend_error {
return (retry);
}
sub vcl_deliver {
if (bereq.url exe;wmv;mp3;wma;ogg;swf;flv;mp4;avi;mpg;mpeg;f4v;rmvb;rm;3gp;img;cur;gif;png;jpe;ico;bmp;jpeg;jpg;rpm;deb;tar;gz;bin;bz2;zip;rar;ipa;apk;jar;sis;xap;msi;cab;7z;pdf;doc;docx;xls;xlsx;ppt;pptx;txt;css;js;wav) {
set resp.http.Cache-Control = "max-age=31536000, s-maxage=31536000";
}
# Cache status
set resp.http.X-cache-edge = obj.hits + " (" + req.http.X-status + ":" +
server.identity + ") " + resp.http.X-cache;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment