添加 haproxy X-Forwarded-Host 请求头

ste*_*eh7 5 http-headers haproxy x-forwarded-for

我有一个 Haproxy 实例,它Host使用http-request set-header.

http-request set-header Host internal.example
Run Code Online (Sandbox Code Playgroud)

但是,我仍然希望后端能够访问原始Host标头。我认为这X-Forwarded-Host是一个很好的候选人,但是我正在努力弄清楚如何做到这一点。

我正在使用这个,它有效:

capture request header Host len 64
http-request set-header X-Forwarded-Host %hrl
Run Code Online (Sandbox Code Playgroud)

但当然,这是一个巨大的黑客 - 不能超过 64 个字符,如果我需要捕获另一个标题,它将无法工作。

有没有更好的办法?

Gre*_*egL 5

正如 Joel E Salas 在评论中提到的那样,更改Host标题是一件有点奇怪的事情,但我想如果后端只理解某些值,它可能是有意义的。

在任何情况下,您都可以将req.hdrfetch 样本用作 的变量http-request,因此:

http-request set-header X-Forwarded-Host %[req.hdr(Host)]
Run Code Online (Sandbox Code Playgroud)

在运行http-request set-header重写Host标头的之前,您必须运行它,但它应该可以工作。