Nginx – Redirection url si le fichier n’existe pas avec try_files 5


Rediriger une url lorsque le fichier n’existe pas sur le serveur peut être très utile si vous décider de changer touts vos formats de fichier de jpeg à png ou formats videos de flv à mp4 etc.

Par exemple vous décidé de convertir toutes les videos de votre serveur de flv à mp4, vous lancez un script de conversion à la volée et vous vous retrouver avec du flv et du mp4, vous pouvez modifier votre script php, python, etc pour tester si la video est en flv ou mp4 ou le faire directement au niveau de nginx qui a une fonction pour: try_files.

Dans votre config nginx server:

server {
     # Serve videos for web
        location ~ (.*)\.flv$ { 
                try_files $uri $uri/ $1.mp4?$args;
                flv; # http flv module
        }
 
        location ~ (.*)\.mp4$ {  
                mp4; # http mp4 module
        }
}

nginx va tester l’url de la video flv, si il ne la trouve pas il redirige l’url appelée mais avec l’extension mp4 cette fois-ci, $args est pour rajouter les éventuels arguments venant après la requête de l’url (ex: ?start=213424)

Cette astuce m’a permis entre autre de convertir à chaud 50 000 videos sur un serveur pendant que celui-ci était en prod tout en gardant les vidéos disponibles aux public et ce sans changer le script de mon site, juste en 3 lignes de conf nginx.

5 thoughts on “Nginx – Redirection url si le fichier n’existe pas avec try_files

Leave a comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.