haproxy 不会有条件地添加标头

haproxy 不会有条件地添加标头

我有以下配置,它位于frontendtls 连接部分下,并且 haproxy 终止 https 连接:

acl domain-acl-host hdr(host) -i domain.tld
rspadd X-Foo:\ bar if domain-acl-host
rspadd X-Baz:\ baz
http-response set-header X-Bar bar if domain-acl-host
use_backend backend_name if domain-acl-host

use_backend指令按预期有条件地工作(有多个不同的域名提供服务,并且选择正确)

但是没有条件地将标题添加/设置到响应中。

我预计在那里添加 3 个额外的标题:X-FooX-BazX-Bar,但只X-Baz添加了:

< HTTP/1.1 302 Found
< Server: nginx
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Cache-Control: max-age=0, must-revalidate, private
< Date: Sun, 14 Oct 2018 20:25:59 GMT
< Location: https://domain.tld/somewhere/else
< X-Baz: baz

我确信我遗漏了一些琐碎的东西,但阅读文档或谷歌并没有帮助。

附言:这是haproxy 1.8.8

答案1

响应标头中没有主机标头,您的 acl 永远不会匹配。使用如下方法:

    http-request set-var(txn.foo) req.hdr(host)
    http-response set-header bar 1 if { var(txn.foo) foo.bar }

相关内容