Https

haproxy 不會有條件地添加標頭

  • October 14, 2018

我有以下配置,它位於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

我確定我遺漏了一些微不足道的東西,但閱讀文件或Google並沒有幫助。

PS:這是haproxy 1.8.8

響應標頭中沒有主機標頭,您的 acl 永遠不會匹配。使用這樣的東西:

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

引用自:https://serverfault.com/questions/935492