我有一个 Haproxy 实例,它Host
使用将标题重写为内部标题http-request set-header
。
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 个字符,而且如果我需要捕获另一个标题它也无法工作。
有没有更好的办法?
答案1
正如 Joel E Salas 在评论中提到的那样,更改Host
标题是一件稍微奇怪的事情,但我想如果后端只理解某些值,它可能会有意义。
无论如何,您都可以req.hdr
将获取的样本用作变量http-request
,如下所示:
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
您必须在运行http-request set-header
重写标题之前运行它Host
,但它应该可以工作。