http-request set-header
を使用してHost
ヘッダーを内部のヘッダーに書き換えるHaproxyインスタンスがあります。
http-request set-header Host internal.example
ただし、バックエンドが元のHost
ヘッダーにアクセスできるようにしたいのですが。 X-Forwarded-Host
はこれに適した候補だと思いますが、その方法を理解するのに苦労しています。
私はこれを使っていますが、うまくいきます:
capture request header Host len 64
http-request set-header X-Forwarded-Host %hrl
しかし、もちろんそれは巨大なハックです。64文字を超えると機能せず、別のヘッダーをキャプチャする必要がある場合は機能しません。
もっと良い方法はありますか?
Joel E Salasがコメントで述べたように、Host
ヘッダーを変更するのは少し奇妙なことですが、バックエンドが特定の値しか理解していない場合は、それが意味をなすと思います。
いずれの場合でも、req.hdr
フェッチサンプルをhttp-request
への変数として使用できます。
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
Host
ヘッダーを書き換えるhttp-request set-header
を実行する前に実行する必要がありますが、機能するはずです。