我有一个Haproxy实例,使用http-request set-header Host头重写为内部http-request set-header 。
http-request set-header Host internal.example
不过,我仍然希望后端可以访问原始的Host头。 我认为X-Forwarded-Host是一个很好的select,但是我正在努力想办法做到这一点。
我正在使用这个工作:
capture request header Host len 64 http-request set-header X-Forwarded-Host %hrl
但当然这是一个巨大的黑客 – 不会超过64个字符的工作,如果我需要捕获另一个头,将无法正常工作。
有没有更好的办法?
正如Joel E Salas通过评论所提到的,更改Host标头是一件很奇怪的事情,但是我想如果后端只能理解某些值,那么它可能是有意义的。
在任何情况下,您都可以使用req.hdr提取样本作为http-request的variables,因此:
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
在运行重写Host头部的http-request set-header之前,你必须运行它,但是它应该可以工作。