Yo uso 404 reescritura url:
error_page 404 = /url_rewriting.php;
Almaceno en caché las imágenes generadas con un render script estando en una carpeta /render/:
set $no_cache 0;
location ~ /render/ {
include snippets/fastcgi-php.conf;
#fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_buffers 8 16k; # increase the buffer size for PHP-FTP
fastcgi_buffer_size 32k; # increase the buffer size for PHP-FTP
fastcgi_cache_key $scheme$host$request_uri$request_method;
fastcgi_cache PROD;
fastcgi_cache_valid any 20d;
fastcgi_cache_valid 404 1d;
fastcgi_cache_use_stale updating error timeout invalid_header http_500 http_503;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_hide_header "Set-Cookie";
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
expires 10M;
access_log off;
add_header Cache-Control "public";
add_header X-Cache-Status $upstream_cache_status;
}
La caché funciona con una url como ésta:
https://mywebsite.com/include/php/render/framed/img.php?VR=1&size=300&image=U3pmwKi
Pero la caché no funciona con una url como esta:
https://mywebsite.io/include/php/render/framed/file/VR/1/size/300/image/U3dpwK
Esta segunda URL pasa por error_page 404 = /url_rewriting.php;
porque el directorio 'file' no existe pero el script muestra la imagen gracias a url_rewriting.php script que hace el truco
¿Qué tengo que actualizar en mi configuración de Nginx para poder almacenar en caché las respuestas 404?