From d0baadf59fc0a45350a424a018a6692984e99b5a Mon Sep 17 00:00:00 2001
From: Nicolas CARPi <3043706+NicolasCARPi@users.noreply.github.com>
Date: Thu, 21 Nov 2024 13:05:25 +0100
Subject: [PATCH] feat: nginx: cache responses from app/download.php results
 (#44)

* feat: nginx: cache responses from app/download.php results

This configuration change prevents the browser from systematically
downloading thumbnails of uploaded files. Because "uploads" URLs are
always pointing to the same exact file, we can cache the response.
---
 src/nginx/common.conf | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/nginx/common.conf b/src/nginx/common.conf
index 81dacb5..8bb0e82 100644
--- a/src/nginx/common.conf
+++ b/src/nginx/common.conf
@@ -78,6 +78,18 @@ location = /nginx-status {
 # deny access to hidden files/folders
 location ~ /\.  { access_log off; log_not_found off; deny all; }
 
+# for user uploaded files, use a long cache value, as uploads are not modified anyway: an URL points always to the same exact file
+location ^~ /app/download.php {
+    more_set_headers "Cache-Control: public, max-age=31536000";
+    include         /etc/nginx/fastcgi.conf;
+    fastcgi_index  index.php;
+    log_not_found off;
+
+    if (-f $request_filename) {
+        fastcgi_pass   unix:/run/php-fpm.sock;
+    }
+}
+
 # assets configuration
 location ~* \.(js|css|png|jpg|jpeg|gif|ico|map|ttf|txt|woff|woff2|svg|webmanifest)$ {
     access_log off;