Nginx : avoir l’IP réelle du visiteur avec CloudFlare

Dans ce tutoriel, je vais vous expliquer comment avoir l’adresse IP réelle des visiteurs en utilisant les services CloudFlare et un serveur web Nginx.

Ce que je vais vous expliquer dans ce tutoriel est valable quand Nginx est utilisé comme serveur Web frontale ou en tant que reverse proxy.

Par défaut, quand on utilise CloudFlare en mode Proxy, l’adresse IP vue par le serveur Web est l’adresse du serveur CloudFlare qui a été utilisé et donc niveau des logs Nginx, on se retrouve avec les IPs des serveurs CloudFlare.

Cette situation est gênante quand :

  • On exploite les logs pour générer des statistiques
  • On utilise une solution de protection comme Crowdsec ou Fail2ban, car on bloque le serveur CloudFlare et non « l’attaquant ».

Récupérer l’adresse IP réelle du visiteur

Pour récupérer l’adresse IP du visiteur, nous allons modifier le fichier de configuration /etc/nginx/nginx.conf.

Commencer par sauvegarder le fichier /etc/nginx/nginx.conf :

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak001

Maintenant on va créer dans le dossier /etc/nginx un fichier nommer CloudfFare qui contenir les paramètres :

Créer le fichier :

sudo touch /etc/nginx/cloudflare

Éditer le fichier :

sudo nano /etc/nginx/cloudflare

Coller le contenu ci-dessous, qui va permettre de modifier l’IP de CloudFlare par l’IP du visiteur :

Maintenant ouvrir le fichier /etc/nginx/nginx.conf pour indiquer d’inclure le fichier cloudflare.

sudo nano /etc/nginx/nginx.conf

Dans la section http{ ... } ajouter :

# Cloudflare Real IP visitors
include /etc/nginx/cloudflare;

Vérifier la configuration de Nginx :

sudo nginx -t

S’il n’y a pas d’erreur redémarrer Nginx pour la prise en compte :

sudo systemctl restart nginx

Vérifier maintenant les logs (access), l’ip réel du visiteur doit être capturée.


Pour récupérer les adresses IP de Cloudflare, elles sont disponibles ici :

  • IPv4 : https://www.cloudflare.com/ips-v4
  • IPv6 : https://www.cloudflare.com/ips-v6