Ce qui est cool avec nginx, c’est qu’il peut très facilement se compiler avec pleinnnn de modules additionnels.
Par exemple, pour le compiler avec le support du scripting en Lua et des URLs sécurisées jetables :
set -ex cd /tmp # on installe quelques dépendances, exemple sous Ubuntu sudo apt-get install libgpgme11 libgpgme11-dev git-core # on récupère le codes modules additionnels # très souvent dispo sur github, c'est la fête ! git clone https://github.com/chaoslawful/lua-nginx-module git clone https://github.com/WebServer-Tools/nginx-accesskey-module.git # on dl les sources de nginx lui même wget http://nginx.org/download/nginx-1.2.6.tar.gz tar -xvf nginx-1.2.6.tar.gz cd nginx-1.2.6/ # on compile nginx avec les modules, on inclut aussi le support de gzip # vu que c'est une config web, et on lui dit de mettre l'exe # dans /usr/local/nginx ./configure --prefix=/usr/local/nginx --with-http_gzip_static_module --add-module=/tmp/lua-nginx-module --add-module=/tmp/nginx-accesskey-module # et on lance la compilation make sudo make install |
Et voilà, un nginx tout neuf. Bon derrière, il faut modifier le fichier /etc/init.d/nginx pour qu’il démarre votre nginx custo, et pas celui des packages.
Juste pour dire que c’est facile à faire. Y a pas 40 000 dépendances, on a des features très étonnantes disponibles dans les modules, et on peut faire des configs différentes pour chaque type de serveur.
Joie.
“URLs sécurisées jetables”
Pardonnez mon ignorance mais… c’est quoi ?
Je reste un peu sur ma faim :-) .Quels sont les sites de référence sur ces modules ? quels modules recommandez-vous ?
C’est pour restreindre l’accès à une url en utilisant une clé (ip ou autre).
Je suppose que c’est pour 0bin.
la liste des modules est là http://wiki.nginx.org/3rdPartyModules
après c’est à chacun de faire sa popotte :)
Les urls sécurisées jetables sont des adresses qui ne sont accessibles que si on passe une clé en paramètre. C’est pratique si on veut faire des URLs qui expires (pour éviter le hotlinking par exemple), ou des URLS qui sont sur des servers sans authentification mais qu’on veut rendre accessible qu’à certains utilisateurs.
L’url ressemble à ça:
http://tonside.com/path/?key=JLK!F78?FD98Q%£JI
Et la clé est différente à chaque fois, et expire sous conditions. Si la clé n’est pas valide, impossible de d’accéder à la ressource. La clé est générée côté serveur à la demande du client à chaque fois.
On l’utilise pour deux choses:
– éviter le hotlinking des videos (le gars copie nos liens de streaming pour les mettre sur son site, mais le lien est plus valide le lendemain)
– sécuriser des uploads (qui sont sur un serveur sans accès à la base de données utilisateur)
Au passage, la dernière version de accesskey file une erreur à l’usage. Je viens de m’en rendre compte après l’écriture de l’article:
unknown directive “accesskey”
La solution est ici : http://www.ruby-forum.com/topic/168323
@oliviergg
On utilise essentiellement :
Development Kit : dépendance d’autres modules
Access Key : voir ci-dessus
Echo : pour debug. J’ai jamais réussi à le faire marcher mais Max y arrive.
Lua : Pour scripter en Lua nginx. Trop top.
MP4 : Pour streamer les videos
Redis2 : Pour taper dans Redis sans soliciter le backend (ça évite de charger le framework web)
Upload : pour uploader des fichiers sans soliciter le backer (idem)
Upload Progress : pour afficher la progression des uploads en ajax
C’est pas un peu lourd de devoir recompiler à chaque fois ? Enfin c’est pas comme si y’avait le choix, mais un chargement un peu plus dynamique des modules serait plus pratique à utiliser, non ?
@kontre
bof, ça se compile rapidos et tu fais pas ça tous les matins, en gros t’en as pour 10 sec avec le script ci-dessus et un peu plus si il faut chercher les modules.
Sinon des mecs ont fait un projet appelé openresty qui comprend déjà pas mal de modules, je l’ai pas testé car j’aime pas avoir trop de superflue mais il est pas mal cité dans les docs que j’ai pu voir.
@Max
Je vais sans doute passer pour une quiche mais. La compilation tout les matins, c’est pour générer des clef différentes chaque jours ?
Si oui es ce qu’on ne peut pas mettre en place un cron pour faire ça automatiquement ? :/
Tas as fumé Pocket Tiger, on compile pas tous les matin. Une fois pour chaque server c’est tout ^^
La clé est est générée pour chaque requête, et algorithmiquement, heureusement.
@Sam
Fectivement, j’ai raté la négation dans la phrase de Max -_-