web-dev-qa-db-fra.com

HAProxy - comment ajouter l'IP du client dans les en-têtes X-Client-IP et X-Forwarded-For?

J'ai un problème avec le serveur HAProxy. Je veux transmettre en en-tête une adresse IP client. Je l'ai presque fait, mais il y a un cas intéressant et je ne peux pas le comprendre. J'ai besoin d'écrire l'IP du client à 2 endroits dans l'en-tête, dans les balises X-CLIENT-IP et X-FORWARDED-FOR.

Le problème est: quand j'utilise

option http-server-close
option forwardfor

Sur le serveur cible, je vois dans l'en-tête X-FORWARDED-FOR = xxx.xxx.xxx.xxx (ip client) mais il n'y a pas d'en-tête x-client-ip.

Quand j'utilise:

option forwardfor header X-Client-IP
option http-server-close

Sur le serveur cible, je vois l'en-tête X-CLIENT-IP = xxx.xxx.xxx (IP client) mais X-FORWARDED-FOR = xxx.xxx.xxx.xxx (HAProxy ip)

J'ai besoin de voir sur l'en-tête cible où X-CLIENT-IP et X-FORWARDED-FOR ont une valeur d'IP client.

J'essaie de mélanger des configurations comme

 option forwardfor
 option forwardfor header X-Client-IP
 option http-server-close

Aucun effet. Je ne peux pas non plus installer de modules. La cible est IIS.

Des idées? :(

10
KacproSo

Vous pouvez essayer de configurer un en-tête personnalisé, comme ceci:

http-request set-header X-Client-IP %[src]

Ou, vous pouvez même le copier à partir de l'en-tête X-Forwarded-For, je pense que la syntaxe irait quelque chose comme:

http-request set-header X-Client-IP req.hdr_ip([X-Forwarded-For])
12
Jakov Sosic

Si vous souhaitez utiliser les deux, vous devrez ajouter le second avec un http-request mot-clé.

# add X-FORWARDED-FOR
option forwardfor
# add X-CLIENT-IP
http-request add-header X-CLIENT-IP %[src]
5
GregL

La réponse suggérée ci-dessus qui ne fonctionnait pas pour KacproSo devait simplement lire la valeur en ajoutant &[...], cela devrait donc fonctionner correctement:

http-request set-header X-Client-IP %[req.hdr_ip([X-Forwarded-For])]
0
user489680

Essayer HAproxy 1.7, c'est la syntaxe correcte qui fait que cela fonctionne, sans les carrés carrés autour de X-Forwarded-For

   http-request set-header X-Client-IP %[req.hdr_ip(X-Forwarded-For)]
0
user3540644