Récupérer l’IP du client avec apache2 derrière un reverse-proxy

Derrière un reverse-proxy (comme pound), l’ip récupérée par apache et donc php est celle du proxy.

Voici comment récupérer la bonne ip avec php :

if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
     $ipclient = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
     $ipclient = $_SERVER["REMOTE_ADDR"];
}

Cette solution fonctionne mais n’est pas très pratique.

J’utilise donc un mod d’apache2 : mod_rpaf. Grace à ce mod, nous allons pouvoir avoir directement la bonne adresse IP avec

$_SERVER["REMOTE_ADDR"];

Pour installer mod_rpaf :

aptitude install libapache2-mod-rpaf

Editez ensuite le fichier “/etc/apache2/mods-available/rpaf.conf” en entrant l’IP du reverse-proxy. Activez le mode avec ces commandes :

a2enmod rpaf
apache2ctl -t
apache2ctl restart

Vous avez maintenant l’adresse ip du client en utilisant REMOTE_ADDR.