Leverage nginx proxy cache to store items with a 1 year TTL with no size limit.
authorMark Felder <feld@FreeBSD.org>
Tue, 22 Oct 2019 19:07:59 +0000 (14:07 -0500)
committerMark Felder <feld@FreeBSD.org>
Tue, 22 Oct 2019 19:07:59 +0000 (14:07 -0500)
It does not purge items when they expire, but will only update them if the origin's
copy has changed for some reason. If origin is offline/unavailable or gone forever
it will still serve the cached copies.

docs/administration/storing_remote_media.md

index 7edda27537613a18530ee01ed44c5f7f53278118..0abb85a771f2d69b362c909048a24f85d45aff38 100644 (file)
@@ -6,22 +6,25 @@ as soon as the post is received by your instance.
 
 ## Nginx
 
-We should be using `proxy_store` here I think???
-
 ```
+proxy_cache_path /long/term/storage/path/pleroma-media-cache levels=1:2 keys_zone=pleroma_media_cache:10m
+                 inactive=1y use_temp_path=off;
+
     location ~ ^/(media|proxy) {
         proxy_cache        pleroma_media_cache;
         slice              1m;
         proxy_cache_key    $host$uri$is_args$args$slice_range;
         proxy_set_header   Range $slice_range;
         proxy_http_version 1.1;
-        proxy_cache_valid  200 206 301 304 1h;
+        proxy_cache_valid  206 301 302 304 1h;
+        proxy_cache_valid  200 1y;
         proxy_cache_lock   on;
+        proxy_cache_use_stale error timeout invalid_header updating;
         proxy_ignore_client_abort on;
         proxy_buffering    on;
         chunked_transfer_encoding on;
-        proxy_ignore_headers Cache-Control;
-        proxy_hide_header  Cache-Control;
+        proxy_ignore_headers Cache-Control Expires;
+        proxy_hide_header  Cache-Control Expires;
         proxy_pass         http://127.0.0.1:4000;
     }
 ```