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です。
何か案は? :(
次のようにカスタムヘッダーを設定してみてください。
http-request set-header X-Client-IP %[src]
または、X-Forwarded-Forヘッダーからコピーすることもできます。構文は次のようになると思います。
http-request set-header X-Client-IP req.hdr_ip([X-Forwarded-For])
両方を使用する場合は、http-request
キーワードを使用して2番目を追加する必要があります。
# add X-FORWARDED-FOR
option forwardfor
# add X-CLIENT-IP
http-request add-header X-CLIENT-IP %[src]
KacproSoでは機能しない上記の推奨回答は、&[...]
を追加して値を読み取る必要があるだけなので、これは正常に機能するはずです。
http-request set-header X-Client-IP %[req.hdr_ip([X-Forwarded-For])]
HAproxy 1.7を試してみると、これは、X-Forwarded-Forの周りの四角いブレイケットなしでこの機能を実現する正しい構文です
http-request set-header X-Client-IP %[req.hdr_ip(X-Forwarded-For)]