Retour aux articles

Comment récupérer l’adresse IP réelle des utilisateurs derrière Fasterize ?

Découvrez comment récupérer l’adresse IP réelle de vos utilisateurs lorsque votre site est derrière Fasterize. Apprenez à exploiter les headers X-Forwarded-For et True-Client-IP, configurer votre serveur (Apache, Nginx, Varnish…) et garantir le bon fonctionnement de vos logs, règles de sécurité et analyses.

Introduction

Lorsque vous utilisez Fasterize, vos pages web sont servies via un fonctionnement de type proxy. Concrètement, cela signifie que les requêtes reçues par votre serveur d’origine proviennent des adresses IP de la plateforme Fasterize, et non directement de celles de vos utilisateurs.

Dans les logs de votre serveur, vous voyez donc les IP des machines Fasterize à la place des IP client réelles.

Cela peut poser problème dans plusieurs cas :

Heureusement, Fasterize transmet l’adresse IP réelle de l’utilisateur à travers des en-têtes HTTP spécifiques.

💡 L’objectif est simple : adapter votre serveur ou votre application pour exploiter ces en-têtes au lieu de se baser sur l’IP source visible par défaut.

Quels en-têtes utiliser pour récupérer l’IP client ?

Pour transmettre l’adresse IP réelle de l’utilisateur jusqu’à votre origine, Fasterize ajoute deux en-têtes HTTP :

X-Forwarded-For contient une liste des adresses IP ayant relayé la requête. La première adresse de la liste correspond à l’adresse IP du navigateur.

Exemple :

X-Forwarded-For: client, proxy1, proxy2

True-Client-IP contient directement l’adresse IP du client :

True-Client-IP: client

💡 Dans la plupart des cas, True-Client-IP est le plus simple à exploiter.

X-Forwarded-For reste utile si votre infrastructure manipule déjà cette chaîne d’adresses.

Pourquoi l’IP client n’apparaît-elle plus dans vos logs ?

Avec Fasterize, le chemin de la requête ressemble à ceci :

Votre serveur ne voit donc plus directement l’utilisateur final. Il voit Fasterize comme dernier intermédiaire réseau.

⚠️ Sans configuration adaptée, vos logs, vos règles de sécurité et vos mécanismes anti-abus se baseront sur les IP Fasterize, ce qui fausse leur fonctionnement.

Comment configurer votre serveur pour récupérer l’IP réelle ?

Apache

Pour Apache, nous recommandons l’utilisation du module RemoteIP.

Vous pouvez compiler et installer le module avec :

apxs-i-a-c mod_remoteip.c

Ensuite, ajoutez cette ligne dans votre vhost Apache :

RemoteIPHeader True-Client-IP

Cette directive indique à Apache d’utiliser la valeur du header True-Client-IP comme IP client réelle.

💡 C’est la solution recommandée si vous souhaitez que l’IP réelle soit prise en compte proprement par Apache, et pas seulement affichée dans les logs.

Nginx

Pour Nginx, nous recommandons l’utilisation de RealIP.

Le principe est le même : demander à Nginx d’utiliser l’IP présente dans l’en-tête transmis par le proxy plutôt que l’IP source de la connexion réseau.

Varnish

Si vous utilisez Varnish, la logique du vcl_recv doit contenir :

if (req.http.x-forwarded-for) {
   set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
   set req.http.X-Forwarded-For = client.ip;
}

Cette configuration permet de conserver et enrichir correctement la chaîne X-Forwarded-For.

IIS

Pour IIS à partir de la version 8.5, vous pouvez utiliser les fonctionnalités d’Enhanced Logging.

Pour les versions plus anciennes, l’add-on Advanced Logging doit être installé. Une fois installé, vous disposez d’une option supplémentaire appelée Advanced Logging dans IIS, qui permet d’ajouter et d’exploiter les en-têtes HTTP transmis par le proxy.

⚠️ Sur IIS, la récupération de l’IP réelle dépend souvent de la façon dont les logs sont configurés. Il est donc important de vérifier que les bons champs sont bien journalisés.

HAProxy

Si vous utilisez HAProxy entre Fasterize et votre serveur web, il faut tenir compte d’un proxy supplémentaire dans la chaîne.

Dans ce cas, ajoutez la capture du header True-Client-IP dans HAProxy.

L’idée est d’utiliser :

capture request header True-Client-IP len ...

Cette directive permet de récupérer l’IP client dans le champ captured_request_headers du format de log HTTP par défaut.

💡 À noter : option forwardfor sert uniquement à transmettre l’IP du client au serveur web. Cela peut être utile pour les logs Apache par exemple, mais ce n’est pas équivalent à la capture du header True-Client-IP dans les logs HAProxy.

Comment mettre à jour vos logs serveur ?

Si vous ne souhaitez pas ajouter de module côté Apache ou Nginx, vous pouvez simplement enregistrer l’adresse IP cliente dans vos logs.

Pour Apache, ouvrez le fichier /etc/httpd/conf/httpd.conf et remplacez la ligne de CustomLog par la configuration suivante :

LogFormat "%{True-Client-IP}i %l %u %t \\"%r\\" %>s %b \\"%{Referer}i\\" \\"%{User-Agent}i\\"" proxy

SetEnvIf True-Client-IP "^.*\\..*\\..*\\..*" forwarded

CustomLog "/usr/local/apache/domlogs/mydomain.com" combined env=!forwarded
CustomLog "/usr/local/apache/domlogs/mydomain.com" proxy env=forwarded

Apache choisira alors automatiquement le bon format de log selon la présence de l’en-tête True-Client-IP.

💡 Cette approche est utile si vous voulez conserver l’IP réelle dans vos journaux sans modifier plus profondément le comportement du serveur.

Comment faire si vous ne pouvez pas modifier le serveur ?

Si vous ne pouvez pas intervenir sur la configuration du serveur, vous pouvez parfois adapter votre CMS ou votre application pour qu’il exploite les bons en-têtes.

WordPress

Vous pouvez utiliser un plugin comme :

Ces extensions permettent à WordPress d’interpréter correctement l’IP réelle d’un utilisateur lorsqu’un proxy est utilisé.

Magento 1 et Magento 2

Vous devez ajouter la section suivante dans local.xml, dans la balise <global> :

<remote_addr_headers>
<!-- list headers that contain real client IP if webserver is behind a reverse proxy -->
<header1>HTTP_TRUE_CLIENT_IP</header1>
<header2>HTTP_X_FORWARDED_FOR</header2>
</remote_addr_headers>

Cela permet à Magento d’interpréter correctement les en-têtes True-Client-IP et X-Forwarded-For.

PHP

Si votre application est développée en PHP, vous pouvez récupérer l’IP réelle via la variable serveur :

$_SERVER['HTTP_X_FORWARDED_FOR']

⚠️ Cette méthode suppose que votre application sait interpréter correctement le contenu de X-Forwarded-For, notamment lorsqu’il contient plusieurs IP.

Comment adapter un blocage IP dans .htaccess ?

Si vous utilisez aujourd’hui un blocage par adresses IP dans un dossier de votre site, il faut le mettre à jour pour tenir compte du header X-Forwarded-For.

Configuration initiale :

Order Deny,Allow
Deny from all
Allow from 172.135.135.234
Allow from 172.135.135.235

Configuration adaptée :

Order Deny,Allow
Deny from all
SetEnvIf X-Forwarded-For "^172\\.135\\.1135\\.234" AllowAccess_1
SetEnvIf X-Forwarded-For "^172\\.135\\.1135\\.235" AllowAccess_2
Allow from env=AllowAccess_1
Allow from env=AllowAccess_2

⚠️ Sans cette adaptation, vos règles risquent de filtrer les IP Fasterize au lieu des IP utilisateurs.

Dans quels cas avez-vous besoin de récupérer l’IP client ?

Voici quelques scénarios courants où l’adresse IP réelle est utile côté origine :

Si votre site est concerné par l’un de ces cas, nous vous recommandons fortement d’exploiter X-Forwarded-For ou True-Client-IP.

Même si ce n’est pas encore un besoin immédiat, il est préférable d’anticiper cette configuration dès maintenant.

💡 Ces changements ne présentent pas de risque particulier si vous ne consommez pas encore l’IP client. En revanche, ils vous éviteront des blocages futurs lorsque ce besoin apparaîtra.

Conclusion

Lorsque Fasterize est placé devant votre site, votre serveur d’origine ne voit plus directement l’adresse IP réelle des utilisateurs. Pour continuer à exploiter cette information, vous devez vous appuyer sur les en-têtes transmis par Fasterize, en particulier True-Client-IP et X-Forwarded-For.

Selon votre environnement, plusieurs approches sont possibles :

La bonne pratique consiste à faire cette adaptation dès la mise en place de Fasterize, afin de conserver un fonctionnement cohérent de vos logs, de vos outils d’analyse et de vos mécanismes de sécurité.