1234567891011121314151617181920212223242526272829303132333435363738 |
- vcl 4.0;
- backend default {
- .host = "localhost";
- .port = "8080";
- }
- sub vcl_recv {
- # Implementing websocket support (https://www.varnish-cache.org/docs/4.0/users-guide/vcl-example-websockets.html)
- if (req.http.Upgrade ~ "(?i)websocket") {
- return (pipe);
- }
- }
- sub vcl_pipe {
- if (req.http.upgrade) {
- set bereq.http.upgrade = req.http.upgrade;
- set bereq.http.connection = req.http.connection;
- }
- }
- sub vcl_backend_response {
- # Set 1s ttl if origin response HTTP status code is anything other than 200
- if (beresp.status != 200) {
- set beresp.ttl = 1s;
- set beresp.uncacheable = true;
- return (deliver);
- }
- if (bereq.url ~ "m3u8") {
- # assuming chunks are 2 seconds long
- set beresp.ttl = 1s;
- set beresp.grace = 0s;
- }
- if (bereq.url ~ "ts") {
- set beresp.ttl = 10m;
- set beresp.grace = 5m;
- }
- }
|