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 :
- blocage d’activité abusive par IP
- détection de fraude
- analyse du comportement utilisateur
- personnalisation selon la localisation
- contrôle de cohérence de session
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-ForTrue-Client-IP
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 :
- l’utilisateur envoie une requête vers votre site
- Fasterize reçoit cette requête
- Fasterize la transmet ensuite à votre serveur d’origine
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 :
- Proxy Real IP
- Real IP
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 :
- servir un contenu différent selon la localisation de l’utilisateur
- vérifier qu’une session provient de la même machine
- prévenir les abus en limitant les requêtes d’une même IP
- détecter certaines fraudes
- analyser les comportements utilisateurs
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 :
- configurer le serveur web
- enrichir uniquement les logs
- adapter votre CMS ou votre application
- mettre à jour vos règles de sécurité
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é.
.png)