Bonjour à tous,
Je redirige les erreurs 404 vers un fichier php pour faire de la réécriture d’URL:
1 | 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/:
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:
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:
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.