diff --git a/docker/nginx/conf.d/include/location-skylink b/docker/nginx/conf.d/include/location-skylink index ccb40e6f..d9e54e2f 100644 --- a/docker/nginx/conf.d/include/location-skylink +++ b/docker/nginx/conf.d/include/location-skylink @@ -1,8 +1,26 @@ include /etc/nginx/conf.d/include/cors; +proxy_cache skynet; # cache name +proxy_cache_key $skylink$path$arg_format$arg_attachment$arg_start$arg_end$http_range; # unique cache key +proxy_cache_min_uses 3; # cache after 3 uses +proxy_cache_valid 200 206 307 308 48h; # keep 200, 206, 307 and 308 responses valid for up to 2 days +add_header X-Proxy-Cache $upstream_cache_status; # add response header to indicate cache hits and misses + +# map skyd env variable value to "1" for true and "0" for false (expected by proxy_no_cache) set_by_lua_block $skyd_disk_cache_enabled { return os.getenv("SKYD_DISK_CACHE_ENABLED") == "true" and "1" or "0" } +# bypass - this will bypass cache hit on request (status BYPASS) +# but still stores file in cache if cache conditions are met +proxy_cache_bypass $cookie_nocache $arg_nocache $skyd_disk_cache_enabled; + +# no cache - this will ignore cache on request (status MISS) +# and does not store file in cache under no condition +set_if_empty $nocache "0"; + +# disable cache when nocache is set or skyd cache is enabled +proxy_no_cache $nocache $skyd_disk_cache_enabled; + proxy_set_header User-Agent: Sia-Agent; proxy_pass http://sia:9980/skynet/skylink/$skylink$path$is_args$args;