Lorsque le serveur Apache se trouve derrière un serveur mandataire, les IP journalisées dans les logs sont toutes identiques: elles correspondent à l'IP du serveur mandataire. Pour enregistrer l'IP du client à l'origine de la requête, il faut modifier la configuration du serveur Apache.
Coté serveur Apache, activer le mode remoteip
a2enmod remoteip
Ajouter la configuration
vim /etc/apache2/conf-available/remoteip.conf
Le fichier remoteip.conf contient les directives suivantes:
# Variable du header désignant le client d'origine. # Elle peut différer selon le service (répartiteur ou mandataire) # Exemple de variable utilisée par le répartiteur de charge # RemoteIPHeader X-Client-IP RemoteIPHeader X-Forwarded-For # Spécifier dans quel header le module relève les adresses IP # RemoteIPProxiesHeader X-Forwarded-By # Les mandataires autorisés pour lesquels le module remoteip # prendra en compte le header et les variables RemoteIPHeader RemoteIPTrustedProxy 172.16.2.1 # Les serveurs mandataires de confiance peuvent également être # listés dans un fichier # RemoteIPTrustedProxyList
Modifier la chaine de génération des logs dans apache2.conf
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Activer la configuration et relancer le service
a2enconf remoteip service apache2 restart