Skip to content

Instantly share code, notes, and snippets.

@naokij
Created January 14, 2020 09:05
Show Gist options
  • Save naokij/9c67511541f9ad2d82202c6cba8ef7dc to your computer and use it in GitHub Desktop.
Save naokij/9c67511541f9ad2d82202c6cba8ef7dc to your computer and use it in GitHub Desktop.
static_cdn.vcl
vcl 4.0;
import http;
import directors;
# 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 (req.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