Advertisement
Guest User

default.vcl

a guest
Dec 20th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. vcl 4.0;
  3. import std;
  4. import directors;
  5.  
  6. backend default {
  7.         .host = "127.0.0.1";
  8.         .port = "17422";
  9.  
  10.  
  11.     .first_byte_timeout     = 300s;   # How long to wait before we receive a first byte from our backend?
  12.     .connect_timeout        = 5s;     # How long to wait for a backend connection?
  13.     .between_bytes_timeout  = 2s;     # How long to wait between bytes received from our backend?
  14. }
  15.  
  16. sub vcl_recv {
  17.  
  18.     set req.http.Host = regsub(req.http.Host, ":[0-9]+", "");
  19.  
  20.  
  21.     unset req.http.proxy;
  22.  
  23.  
  24.     set req.url = std.querysort(req.url);
  25.  
  26.     if (req.url ~ "\.fid?.*") {
  27.       set req.url = regsub(req.url, "\.fid?.*", "\.fid");
  28.     }
  29.   if (req.http.Range ~ "bytes=") {
  30.     set req.http.x-range = req.http.Range;
  31.   }
  32.  
  33.   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)(\?.*)?$") {
  34.     unset req.http.Cookie;
  35.     return (hash);
  36.   }
  37.  
  38. }
  39.  
  40.  
  41.  sub vcl_backend_response {
  42.  
  43.     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)(\?.*)?$") {
  44.       unset beresp.http.set-cookie;
  45.       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
  46.     }
  47.   if (bereq.http.x-range ~ "bytes=" && beresp.status == 206) {
  48.     set beresp.ttl = 10m;
  49.     set beresp.http.CR = beresp.http.content-range;
  50.   }
  51.  
  52.  
  53.           if (std.integer(beresp.http.Content-Length, 0) > 5242880) {
  54.             set beresp.ttl = 60m;
  55.           }
  56.     return (deliver);
  57.  
  58. }
  59.  
  60. sub vcl_hash {
  61.   if (req.http.x-range ~ "bytes=") {
  62.     hash_data(req.http.x-range);
  63.     unset req.http.Range;
  64.   }
  65. }
  66.  
  67. sub vcl_backend_fetch {
  68.   if (bereq.http.x-range) {
  69.     set bereq.http.Range = bereq.http.x-range;
  70.   }
  71. }
  72.  
  73. sub vcl_deliver {
  74.   if (resp.http.CR) {
  75.     set resp.http.Content-Range = resp.http.CR;
  76.     unset resp.http.CR;
  77.   }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement