Nginx derrière un reverse proxy (Varnish, etc.) : voir les vraies IP

0

Posted by florian | Posted in Sysadmin | Posted on 18-06-2012

Mots-clés : , , ,

Tu aimes la vitesse et fais donc profiter ton Nginx d’un chouette reverse proxy du genre (au hasard) Varnish.
Seulement voilà, tu observes quelques problèmes de sessions au niveau applicatif (PHP ou autre) et puis les logs remontent désespérement toujours la même adresse IP : celle de ton reverse proxy Varnish.

Avec l’été qui tarde à venir, accepte donc ce petit rayon de soleil : tu as juste à ajouter ça dans ta conf’ Nginx, du genre dans un fichier /etc/nginx/conf.d/real_ip.conf tout bien propre :

# Liste des IP de tes reverse proxies, par exemple
set_real_ip_from 192.168.0.0/24;
set_real_ip_from 192.168.0.123;

# Le header HTTP qui contient la vraie IP, généralement "X-Forwarded-For" sur la plupart des confs par défaut des reverse proxies
real_ip_header X-Forwarded-For;

Un petit “service nginx configtest” pour s’assurer que tout baigne, un petit “service nginx reload” et Ô magie du module Real IP de Nginx : ton serveur web voit à présent la vraie IP des clients qui se connectent !

En cas de problème, peu probable puisque la plupart des packages Nginx sous Debian et Ubuntu sont compilés avec le support de Real IP, il faudra songer à recompiler ton Nginx avec le support du module (directive –with-http_realip_module).

Pour aller plus loin :
Wiki de Nginx : module Real IP