set-header para respostas HAProxy

6

Novo na versão 1.5 é a diretiva http-response add-header . Conforme escrito na documentação - isso pode ser usado em frontend , backend e listen .

O que eu estava tentando em uma seção frontend :

use_backend some_backend                if some_condition
http-response add-header Vary Origin    if some_condition

Mas isso não tem efeito. A mesma linha colocada na seção backend funciona perfeitamente bem. Alguém por favor pode me ajudar a entender, o que eu sinto falta aqui? Eu não entendo, por que isso não funciona na seção frontend .

Meu palpite seria que dentro do fronted não há resposta ainda e então a diretiva falha. Eu tentei usá-lo antes e depois da diretiva use_backend .

    
por mana 10.07.2014 / 14:24

1 resposta

5

A execução de haproxy em primeiro plano ( haproxy -d -V -f haproxy.cfg ) com seu exemplo exibiu o seguinte aviso:

acl 'some_condition' will never match because it only involves keywords that are incompatible with 'frontend http-response header rule'

Brincando com minha configuração, descobri que esse aviso é exibido ao usar esta ACL:

acl some_condition req.hdr(Content-Type) -i application/json

Mas não quando usar esta ACL:

acl some_condition res.hdr(Content-Type) -i application/json

A diferença é res vs. req , portanto, verificar cabeçalhos de resposta em vez de cabeçalhos de solicitação. Isso me leva a acreditar que uma regra http-response header em frontend é incapaz de inspecionar request cabeçalhos.

Eu não sei se esta é a funcionalidade pretendida pelo HAProxy, mas certamente não foi claramente documentada.

    
por 28.11.2014 / 12:02

Tags