Se protéger (un peu) avec Nginx…

nginx
Adepte de Nginx, je souhaitais partager avec un vous un petit retour sur la protection ! Aujourd’hui, voici un petit moyen simple de prévenir, ralentir (mais pas empêcher !!!) les attaques, DDOS par exemple. (En gros et selon wikipédia : « Une attaque par déni de service (denial of service attack, d’où l’abréviation DoS) est une attaque informatique ayant pour but de rendre indisponible un service, d’empêcher les utilisateurs légitimes d’un service de l’utiliser.[…] La suite c’est par ici : http://fr.wikipedia.org/wiki/Attaque_par_d%C3%A9ni_de_service). Lire la suite

Hotlinking ? Watermarker vos images sous nginx (et avec php accessoirement !)

Tout le monde sait ce qu’est le hotlinking, et si vous ne le savez pas, on peut juste dire que c’est faire un lien pour illustrer son portail avec une ressource qui ne nous appartient pas. En gros, un portail A fait un joli article sur la crise de la mouche en amazonie centrale avec des images faites par un amateur et hébergées sur un site B.

Le site A ne dépense rien en bande passante, tandis que B qui a site très modeste voit sa bande passante exploser pour peu que A ait une certaine notoriété.

Certains petits malins qui ont des sites comme B auront un serveur dédié, un serveur Nginx installé dessus, et en grattant un peu le web, il sera tombé sur notre article de ce jour pour se dire : « OK, j’autorise le hotlink, mais alors A, tu vas faire de la pub pour moi… »

Le webmaster de B a tout compris…

Comment faire ? Lire la suite

ngx_pagespeed_cache… Faire encore mieux !

Après avoir mis en place le mode pagespeed (voir le billet précédent : https://blog.aulica-conseil.com/index.php/installation-full-de-nginx-1-4-2-ngx_pagespeed-inside/) (et j’espère que comme moi vous apprécierez ce mode et ce qu’il apporte), on va voir que l’on peut encore améliorer les performances, en plaçant le cache en RAM !

C’est très simple, et ça se déroulera en 3 étapes :

  • Création du répertoire en RAM
  • Configuration de Nginx.conf
  • Reload du serveur

Lire la suite

installation full de nginx 1.4.2 ngx_pagespeed inside

Allez vite fait, comment installer Nginx, version 1.4.2, version full, avec plus particulièrement le mod ngx_pagespeed :

On va commencer par résoudre en préalable toutes les dépendances, connecté root :

Téléchargement de pagespeed et psol :

 Téléchargement et préparation de nginx :

J’en profite pour installer le dernier module rtmp :
(https://github.com/arut/nginx-rtmp-module et je vous en parlerai plus tard…)

Et enfin on compile, voici ma liste d’option :

Je fais vite fais une sauvegarde du binaire antérieur :

Et je peux lancer la compilation :

Une fois terminée, je copie le binaire obtenu :

Dans chaque bloc « server » de /etc/nginx/nginx.conf où l’on veut activer le mode pagespeed, on ajoute bien :

Pour vérifier votre installation (présence de la ligne X-Page-Speed)

On n’oublie pas que toute la doc se trouve là :
https://developers.google.com/speed/pagespeed/module/using
et que chaque configuration est à tester !

NB : pour booster encore un peu votre pagespeed, je vous invite à voir ce billet :
https://blog.aulica-conseil.com/index.php/ngx_pagespeed_cache-faire-encore-mieux/

Installer Sympa, Mailing list server sur Nginx, c’est possible !

Sympa est l’outil idéal pour gérer des mailings list, mais la documentation pour une installation sur Nginx est encore assez légère.
J’héberge un client sur un dédié Debian et serveur web Nginx.
Je lui installe donc ce « Sympa » sur mon nginx.
On va faire une installation standard :

Je ne rentre pas dans le détail de la configuration de Sympa, ce n’est pas l’objectif dans ce billet, retour à Nginx :
Dans notre nginx.conf, on va créer un serveur (sous-domaine) :

Dans la doc Sympa, on vous dira de passer par un socket :

Le hic c’est que vous aurez souvent un joli « 403 » affiché à ‘écran, en fonction des droits que vous aurez accordé dans votre système.
Oui passer par le port 8999 est moins rapide, mais nous sommes ici dans une configuration mode « user standalone » !
Si vous développez un portail complet en perl, alors oui vous aurez à passer par les sockets. Aujourd’hui, ce n’est pas le cas !

Si vous n’avez de wrapper perl installé :

Ajouter un script de démarrage /etc/init.d/perl-fcgi :

et enfin :

Recharger Nginx, et accéder à votre liste : http://lists.votredomaine.com

nginx: « Vary: Accept-Encoding » dans les entêtes

Si vous utilisez GTmetrix (par exemple et entre autres !!) pour mesurer la rapidité et la qualité de vote site web, vous pourrez peut être avoir ceci :
The following publicly cacheable, compressible resources should have a « Vary: Accept-Encoding » header: …
(liste de fichiers js, css, html, xml ou encore json…).
GTmetrix vous collera alors un affreux C et baissera votre note de qualité…

La remarque concernant le « Vary: Accept-Encoding header » :

« Bugs in some public proxies may lead to compressed versions of your resources being served to users that don’t support compression. Specifying theVary: Accept-Encoding header instructs the proxy to store both a compressed and uncompressed version of the resource. »

En d’autres termes, il faut activer l’entête « Vary: Accept-Encoding » pour tout ce qui est « fichier » !
Pour Nginx, il faut 2 conditions, que nous poserons au niveau du serveur, paragraphe http:

  1. Activer le module Gzip_Vary (http://wiki.nginx.org/HttpGzipModule#gzip_vary)
  2. Il faut qu’une des directives gzip, gzip_static ou gunzip soit active !
  3. préciser les types mime élus dans la directive gzip_types.

En résumé, voici le bout de code du paragraphe http :

Et enfin, pour affiner son propre gzip_types, fonction de son application web, la liste des types MIME : http://fr.wikipedia.org/wiki/Type_MIME