Como adicionar um cabeçalho personalizado contendo o endereço absoluto do recurso solicitado originalmente

10

Eu tenho a seguinte configuração:

                 |-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
                 |-------|--- backend3:8080

Gostaria de configurar o HAProxy para adicionar um cabeçalho personalizado contendo o URL original. Por exemplo, se o usuário solicitar http://example.com/foo?bar=baz , por exemplo:

GET /foo?bar=baz HTTP/1.1
Host: example.com:80

Gostaria que o HAProxy traduzisse esse pedido para o backend da seguinte forma:

GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz

A opção reqadd só me permite adicionar um cabeçalho com um valor estático. Consegui obter a parte do caminho da solicitação usando reqrep :

reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10])  
x-custom-header: /foo?bar=baz
\r\nx-custom-header:\

mas infelizmente isso captura apenas a parte do caminho do URL original, resultando no seguinte cabeçalho:

                 |-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
                 |-------|--- backend3:8080

Então, minha pergunta é se é possível no HAProxy 1.4 combinar o cabeçalho Host e a primeira linha da solicitação HTTP em um cabeçalho personalizado

    
por Darin Dimitrov 07.05.2014 / 18:01

1 resposta

18

Resposta curta: não, você não pode fazer isso em HAProxy 1.4 .

No entanto, para aqueles que encontram essa pergunta em 1.5 +:

No HAProxy 1.5+, você pode fazer referência a variáveis por meio da sintaxe %[variable] e não está restrito a usar somente strings estáticas. Você pode ver quais variáveis já existem na seção 7.3 do guia de configuração do HAProxy (especificamente < href="http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#7.3.6"> 7.3.6 para as variáveis da camada 7 ).

Para o seu caso, você está vendo% rawurl, assim:

http-request set-header X-Custom-Header %[url]
    
por 11.06.2014 / 13:50

Tags