haproxy não adiciona cabeçalhos condicionalmente

2

Eu tenho a seguinte configuração, está na seção frontend da conexão tls e haproxy termina as conexões 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

A diretiva use_backend funciona condicionalmente conforme o esperado (há vários nomes de domínio diferentes exibidos e eles são escolhidos corretamente)

Mas os cabeçalhos não são adicionados / definidos para a resposta condicionalmente.

Espero que 3 cabeçalhos extras sejam adicionados: X-Foo , X-Baz e X-Bar , mas apenas X-Baz é adicionado:

< 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

Tenho certeza de que estou sentindo falta de algo trivial, mas ler documentação ou o Google não ajudou.

PS: é haproxy 1.8.8

    
por zerkms 14.10.2018 / 22:29

1 resposta

2

não há cabeçalho de host nos cabeçalhos de resposta, sua acl nunca coincide. use algo assim:

    http-request set-var(txn.foo) req.hdr(host)
    http-response set-header bar 1 if { var(txn.foo) foo.bar }
    
por 14.10.2018 / 22:58