Назад | Перейти на главную страницу

haproxy не добавляет заголовки условно

У меня такой конфиг, он под frontend раздел для tls-соединения, а 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-Foo, X-Baz, и X-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

Я уверен, что упускаю что-то банальное, но чтение документации или гугла не помогло.

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 }