Bonjour à tous,

Je redirige les erreurs 404 vers un fichier php pour faire de la réécriture d’URL:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_page 404 = /url_rewriting.php;
Ensuite, mon script PHP génère des images à la volet qui se trouve dans un répertoire /render/:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    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;
    }
Le système de cache fonctionne correctement avec une URL comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
https://mywebsite.com/include/php/render/framed/img.php?VR=1&size=300&image=U3pmwKi
Mais ce système de cache ne fonctionne pas avec une URL comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
https://mywebsite.com/include/php/render/framed/file/VR/1/size/300/image/U3dpwK
La seule différence pour la seconde URL et qu’elle passe par l’erreur 404 qui redirige vers /url_rewriting.php; parce que le répertoire "file" n’existe pas. Mais le script affiche l’image générée grâce à url_rewriting.php qui analyse l’URL et récupére les variables et require le bon fichier.

Qu’est ce que je dois faire pour que Nginx soit capable de de faire du cache sur des réponses 404 ?

Merci.