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

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.

No related posts.

flattr this!

5 comments

  1. TROLOLO

    Quel genre de vidéos ?

  2. Peu importe, flv, mpg, etc, le principe est le même

  3. TROLOLO

    je parlais du contenu des vidéos.

  4. He he, j’ai pensé à la même :D

    En tout cas, merci pour la petite astuce ;)

  5. Nos vidéos sont essentiellement des contenus éducatifs tournant autour de l’étude de la sociologie, de la biologie anatomique et de la mode vestimentaire.

Flux RSS des commentaires

Leave a Reply

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> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Jouer à mario en attendant que les autres répondent