J'ai une application Rails qui génère beaucoup d'images; c'est-à-dire qu'un contrôleur d'images avec une action show extrait une image d'un SAN et la sert. J'ai une caches_page sur ceci qui enregistre de manière fiable une copie du fichier dans un emplacement personnalisé; RAILS_ROOT +/public/cache. Les fichiers sont là et ont l'air bien. Je suis au service de l'application via nginx et il semble bien fonctionner, mais pour la vie de moi, je ne peux pas l'obtenir pour envoyer ces fichiers image en cache au lieu de frapper l'action des rails. Je suis assez nouveau à nginx et je fais des recherches depuis un certain temps mais peu importe ce que j'essaie, ça ne marche pas - je fais quelque chose de fondamentalement faux.Configurer nginx pour servir des images mises en cache
Pour clarifier, j'ai une uri comme ceci:
/images/show/123.jpg
le fichier peut exister ici:
/cache/images/show/123.jpg
Comment puis-je faire nginx servir ce fichier et non transmettre la demande?
Voici une liste non exhaustive de ce que j'ai essayé:
if (-f /cache$request_filename) {
rewrite (.*) /cache$1 break;
break;
}
if (-f /cache$uri.jpg) {
rewrite (.*) /cache$1.jpg break;
}
if (-f /cache/images/show/$request_filename) {
rewrite (.*) /cache/images/show/$1.jpg break;
}
Toutes les idées?
mise à jour: J'ai répondu à ma propre question. La règle correcte était:
if (-f $document_root/cache$request_uri) {
rewrite (.*) /cache$1 break;
}
http://serverfault.com/questions/262995/how-do-i-dry-up-this-nginx -configuration/263854 # 263854 http://serverfault.com/questions/263223/nginx-serve-htm-if-exists-instead-of-php/263395#263395 –