Site icon RDR-IT

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 :

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 :

#Cloudflare ip addresses# - IPv4 set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 104.16.0.0/12; set_real_ip_from 108.162.192.0/18; set_real_ip_from 131.0.72.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 162.158.0.0/15; set_real_ip_from 172.64.0.0/13; set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17;# - IPv6 set_real_ip_from 2400:cb00::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29;real_ip_header CF-Connecting-IP;

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 :

Quitter la version mobile