Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vcl 4.0;
- import std;
- import directors;
- backend default {
- .host = "127.0.0.1";
- .port = "17422";
- .first_byte_timeout = 300s; # How long to wait before we receive a first byte from our backend?
- .connect_timeout = 5s; # How long to wait for a backend connection?
- .between_bytes_timeout = 2s; # How long to wait between bytes received from our backend?
- }
- sub vcl_recv {
- set req.http.Host = regsub(req.http.Host, ":[0-9]+", "");
- unset req.http.proxy;
- set req.url = std.querysort(req.url);
- if (req.url ~ "\.fid?.*") {
- set req.url = regsub(req.url, "\.fid?.*", "\.fid");
- }
- if (req.http.Range ~ "bytes=") {
- set req.http.x-range = req.http.Range;
- }
- if (req.url ~ "^[^?]*\.(7z|avi|bz2|flac|flv|gz|mka|mkv|mov|mp3|mp4|mpeg|mpg|ogg|ogm|opus|rar|tar|tgz|tbz|txz|wav|webm|xz|zip|fid)(\?.*)?$") {
- unset req.http.Cookie;
- return (hash);
- }
- }
- sub vcl_backend_response {
- if (bereq.url ~ "^[^?]*\.(7z|avi|bz2|flac|flv|gz|mka|mkv|mov|mp3|mp4|mpeg|mpg|ogg|ogm|opus|rar|tar|tgz|tbz|txz|wav|webm|xz|zip|fid)(\?.*)?$") {
- unset beresp.http.set-cookie;
- set beresp.do_stream = true; # Check memory usage it'll grow in fetch_chunksize blocks (128k by default) if the backend doesn't send a Content-Length header, so only enable it for big objects
- }
- if (bereq.http.x-range ~ "bytes=" && beresp.status == 206) {
- set beresp.ttl = 10m;
- set beresp.http.CR = beresp.http.content-range;
- }
- if (std.integer(beresp.http.Content-Length, 0) > 5242880) {
- set beresp.ttl = 60m;
- }
- return (deliver);
- }
- sub vcl_hash {
- if (req.http.x-range ~ "bytes=") {
- hash_data(req.http.x-range);
- unset req.http.Range;
- }
- }
- sub vcl_backend_fetch {
- if (bereq.http.x-range) {
- set bereq.http.Range = bereq.http.x-range;
- }
- }
- sub vcl_deliver {
- if (resp.http.CR) {
- set resp.http.Content-Range = resp.http.CR;
- unset resp.http.CR;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement