it-swarm.com.de

HAProxy - Wie wird eine Client-IP in X-Client-IP- und X-Forwarded-For-Headern angehängt?

Ich habe ein Problem mit dem HAProxy-Server. Ich möchte im Header eine Client-IP weiterleiten. Ich habe es fast geschafft, aber es gibt einen interessanten Fall und ich kann es nicht herausfinden. Ich muss die Client-IP an zwei Stellen im Header schreiben, in den Tags X-CLIENT-IP und X-FORWARDED-FOR.

Das Problem ist: Wenn ich benutze

option http-server-close
option forwardfor

Auf dem Zielserver wird im Header X-FORWARDED-FOR = xxx.xxx.xxx.xxx (Client-IP) angezeigt, aber es gibt keinen x-Client-IP-Header.

Wenn ich benutze:

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

Auf dem Zielserver wird der Header X-CLIENT-IP = xxx.xxx.xxx (Client-IP), aber X-FORWARDED-FOR = xxx.xxx.xxx.xxx (HAProxy ip) angezeigt.

Ich muss im Zielheader sehen, wo X-CLIENT-IP und X-FORWARDED-FOR den Wert der Client-IP haben.

Ich versuche Konfigurationen wie zu mischen

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

Kein Effekt. Ich kann auch keine Module installieren. Das Ziel ist IIS.

Irgendwelche Ideen? :(

10
KacproSo

Sie können versuchen, einen benutzerdefinierten Header wie folgt einzurichten:

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

Oder Sie können es sogar aus dem X-Forwarded-For-Header kopieren. Ich denke, die Syntax würde ungefähr so ​​aussehen:

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

Wenn Sie beide verwenden möchten, müssen Sie die zweite mit einem Schlüsselwort http-request Hinzufügen.

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

Die oben vorgeschlagene Antwort, die für KacproSo nicht funktionierte, musste nur den Wert durch Hinzufügen von &[...] Lesen. Dies sollte also gut funktionieren:

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

Bei HAproxy 1.7 ist dies die richtige Syntax, mit der dies funktioniert, ohne die eckigen Klammern um X-Forwarded-For

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