La description wikipedia de l'en-tête HTTP X-Forwarded-For
est :
X-Forwarded-For : client1, proxy1, proxy2, ...
La documentation de nginx pour la directive real_ip_header
se lit, en partie :
Cette directive définit le nom de l'en-tête utilisé pour le transfert de l'adresse IP de remplacement.
Dans le cas d'un X-Forwarded-For, ce module utilise la fonction dernier ip dans l'en-tête X-Forwarded-For pour le remplacement. (C'est moi qui souligne)
Ces deux descriptions semblent en contradiction l'une avec l'autre. Dans notre scénario, le X-Forwarded-For
est exactement comme décrit -- l'adresse IP "réelle" du client est l'entrée la plus à gauche. De même, le comportement de nginx est d'utiliser l'en-tête droite -qui, évidemment, est juste un de nos serveurs proxy.
Ma compréhension de X-Real-IP
est que c'est supposée à utiliser pour déterminer le réel adresse IP du client -- no le mandataire. Est-ce que j'ai raté quelque chose, ou est-ce un bogue dans nginx ?
Et, au-delà de ça, est-ce que quelqu'un a des suggestions sur la façon de rendre la X-Real-IP
l'en-tête affiche le gauche -la valeur la plus élevée, comme l'indique la définition de l'expression X-Forwarded-For
?