web-dev-qa-db-ja.com

HAProxy-X-Client-IPおよびX-Forwarded-ForヘッダーにクライアントIPを追加する方法

HAProxyサーバーに問題があります。ヘッダーでクライアントIPを転送したい。ほぼ完了しましたが、興味深いケースがあり、理解できません。 X-CLIENT-IPおよびX-FORWARDED-FORタグのヘッダーの2箇所にクライアントIPを書き込む必要があります。

問題は次のとおりです。

option http-server-close
option forwardfor

ターゲットサーバーでヘッダーX-FORWARDED-FOR = xxx.xxx.xxx.xxx(client ip)が表示されますが、x-client-ipヘッダーがありません。

私が使うとき:

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

ターゲットサーバーでヘッダーX-CLIENT-IP = xxx.xxx.xxx(client IP)が表示されますが、X-FORWARDED-FOR = xxx.xxx.xxx.xxx(HAProxy ip)

X-CLIENT-IPおよびX-FORWARDED-FORにクライアントIPの値があるターゲットヘッダーを確認する必要があります。

私は構成を混ぜてみます

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

影響なし。モジュールもインストールできません。ターゲットはIISです。

何か案は? :(

10
KacproSo

次のようにカスタムヘッダーを設定してみてください。

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

または、X-Forwarded-Forヘッダーからコピーすることもできます。構文は次のようになると思います。

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

両方を使用する場合は、http-requestキーワードを使用して2番目を追加する必要があります。

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

KacproSoでは機能しない上記の推奨回答は、&[...]を追加して値を読み取る必要があるだけなので、これは正常に機能するはずです。

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

HAproxy 1.7を試してみると、これは、X-Forwarded-Forの周りの四角いブレイケットなしでこの機能を実現する正しい構文です

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