2022-11-21 13:49 Temps de lecture : 5 min

Comment obtenir l'IP client d'AWS, Google Cloud LB et Cloudflare dans Nginx ?

La mise en place d'une application web dans le nuage est une aventure toujours stimulante et captivante.

Récemment, j'ai déployé un outil, toptips.fr Tools, qui réside sur AWS, protégé par Cloudflare.

Pour assurer son fonctionnement, j'utilise l'équilibreur de charge d'application d'AWS et Nginx comme serveur web. Après la mise en production, j'ai consulté le fichier access.log et j'ai constaté que toutes les requêtes étaient étiquetées avec une adresse IP interne, celle de l'équilibreur de charge.

Cela pose problème si l'on souhaite analyser les journaux de serveur web pour identifier l'origine géographique des visiteurs. Il était clair qu'une configuration était manquante ou devait être modifiée pour que l'adresse IP du client soit correctement enregistrée.

Rencontrez-vous ce même problème ?

Voici une méthode simple pour récupérer l'adresse IP réelle des clients dans les logs d'accès Nginx.

Récupération de l'adresse IP des visiteurs avec AWS ou Google Cloud Load Balancer

  • Connectez-vous à votre serveur web Nginx.
  • Naviguez vers le répertoire d'installation (par défaut, /etc/nginx).
  • Effectuez une sauvegarde du fichier nginx.conf.
  • Ajoutez les lignes suivantes dans le bloc HTTP :
real_ip_header X-Forwarded-For;
  set_real_ip_from 0.0.0.0/0;
  • Redémarrez Nginx, et les adresses IP des visiteurs devraient maintenant apparaître dans votre fichier access.log.

Si votre serveur est protégé par Cloudflare, vous constaterez que leurs adresses IP apparaissent à la place de celles des clients. Il est donc nécessaire d'effectuer une configuration supplémentaire.

Obtenir l'adresse IP du client avec Cloudflare

Cloudflare est un excellent fournisseur de CDN et de sécurité, que j'apprécie beaucoup. Si vous l'utilisez comme moi et que vous désirez voir l'adresse IP réelle de vos visiteurs dans les journaux de votre serveur, voici la marche à suivre.

En supposant que vous soyez connecté à votre serveur Nginx :

Réalisez une sauvegarde du fichier de configuration de votre site (habituellement situé ici : /etc/nginx/sites-available/votre_domaine).

Ajoutez le bloc de configuration suivant au début du fichier :

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/13;
  set_real_ip_from 104.24.0.0/14;
  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;
  set_real_ip_from 199.27.128.0/21;
  set_real_ip_from 2400:cb00::/32;
  set_real_ip_from 2606:4700::/32;
  set_real_ip_from 2803:f800::/32;
  set_real_ip_from 2405:b500::/32;
  set_real_ip_from 2405:8100::/32;
  set_real_ip_from 2c0f:f248::/32;
  set_real_ip_from 2a06:98c0::/29;
  real_ip_header CF-Connecting-IP;

Note : Il est conseillé de vérifier la liste des adresses IP sur la Page Officielle de Cloudflare afin de vous assurer qu'elle est à jour.

Redémarrez Nginx, et l'adresse IP du client devrait apparaître dans vos logs. Cette méthode a fonctionné pour moi, et j'espère qu'elle vous sera tout aussi utile.

Dans la prochaine étape, nous aborderons la manière d'implémenter des en-têtes de sécurité à l'aide de Cloudflare Workers.

Avez-vous apprécié la lecture de cet article ? N'hésitez pas à le partager avec votre réseau !

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.