Ce module permet de traiter le client qui a initié la requête en tant que client original du point de vue de httpd à des fins d'autorisation et de connexion, même si ce client se trouve derrière un répartiteur de charge, un serveur frontal, ou un serveur mandataire.
Le module remplace l'adresse IP du client
pour la connexion par l'adresse IP indiquée dans
l'en-tête de requête configuré via la directive
En outre, ce module implémente la partie serveur du protocole PROXY
de HAProxy lorsqu'on utilise la directive
Une fois sa valeur modifiée comme indiqué, cette adresse IP client est
utilisée pour la fonctionnalité %a
des modules %{c}a
.
Par défaut, Apache identifie le client via la valeur client_ip de la connexion, et de cette valeur découlent les valeurs remote_host et remote_logname de la connexion. Ces champs jouent un rôle dans l'authentification, l'autorisation et la journalisation, ainsi que dans d'autres traitements effectués par d'autres modules chargeables.
mod_remoteip remplace l'adresse IP client de la connexion par l'adresse IP client indiquée par exemple par un mandataire ou un répartiteur de charge pour toute la durée de la requête. Un répartiteur de charge pourra ainsi établir une connexion keepalive de longue durée avec le serveur, chaque requête conservant alors l'adresse IP client correcte bien que l'adresse IP client sous-jacente du répartiteur de charge reste inchangée.
Lorsque la valeur de l'en-tête comporte plusieurs adresses IP client séparées par des virgules, celles-ci sont traitées de la droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP client courante n'est pas digne de confiance pour présenter l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de façon à ne contenir que cette liste d'adresses non confirmées, ou bien, si toutes les adresses IP sont dignes de confiance, cet en-tête est tout bonnement supprimé de la requête.
Lors du remplacement de l'adresse IP client, le module stocke
la liste des hôtes intermédiaires dans un mémo
remoteip-proxy-ip-list, que l'on peut faire enregistrer par
%{remoteip-proxy-ip-list}n
. Si l'administrateur doit
stocker ceci dans un en-tête additionnel, la même valeur peut aussi
être enregistrée sous la forme d'un en-tête en utilisant la
directive
La directive
La directive
La directive
Le caractère '#
' indique une ligne de commentaires,
sinon, toutes les lignes séparées par un caractère nouvelle
ligne
ou
tous les éléments d'une ligne séparés par un espace sont traités de
la même façon qu'avec la directive
# Nos mandataires internes de confiance 10.0.2.0/24 # Tout le monde dans le groupe de test passerelle.domaine-local # Le frontal répartiteur de charge
La directive
La directive On
, la
demande du client doit envoyer l'en-tête approprié pour chaque
nouvelle connexion, sinon cette dernière sera fermée à moins qu'il ne fasse
partie de la liste, définie via la directive
Bien que cette directive peut être définie au niveau de n'importe quel serveur virtuel, il est important de garder à l'esprit que, étant donné que le protocole PROXY est basé sur la connexion et agnostique quant au protocle, son activation/désactivation est basée sur le couple adresse IP/port. Cela signifie que si plusieurs serveurs virtuels à base de nom sont configurés avec le même couple adresse IP/port, et si vous activez le protocole PROXY pour l'un d'entre eux, il le sera aussi pour tous les autres (avec le même couple adresse IP/port). Cela signifie aussi que si vous tentez d'activer le protocole PROXY pour un serveur virtuel et de le désactiver pour un autre, cela ne marchera pas ; dans ce dernier cas, la dernière directive l'emporte sur les autres et une notification sera enregistrée dans le journal pour indiquer les réglages qui ont été annulés.
La directive
La directive
A la différence de la directive
La directive
Le caractère '#
' indique une ligne de commentaires,
sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
tous les éléments d'une ligne séparés par un espace sont traités de
la même façon qu'avec la directive