HAProxy: roteamento por credenciais de autenticação básica

3

Tenho muitas solicitações recebidas de um único IP com credenciais fornecidas no cabeçalho HTTP no formato de autenticação básica. Mesmo que a origem seja a mesma, as credenciais variam com frequência entre as solicitações.

Esta é uma API que tira muito benefício de ter um cache na memória. Para que esse cache funcione, no entanto, preciso poder rotear solicitações com um determinado conjunto de credenciais para a mesma máquina.

Isso significa que preciso criar uma solução de roteamento que "armazene" uma determinada credencial em uma única máquina por um determinado período de tempo (de 30 minutos), mas também distribua credenciais ainda não conectadas em um ciclo. robin fashion.

Isso é possível com o HAProxy?

    
por NetizenKane 29.01.2014 / 09:58

1 resposta

1

Sim, o HAProxy pode se equilibrar em qualquer cabeçalho de solicitação enviado pelo navegador. De o manual :

  hdr(name)   The HTTP header <name> will be looked up in each HTTP request.
              Just as with the equivalent ACL 'hdr()' function, the header
              name in parenthesis is not case sensitive. If the header is
              absent or if it does not contain any value, the round-robin
              algorithm is applied instead.

No caso de autenticação básica, cada solicitação será autenticada com um cabeçalho Authorization , que assume a forma de Authorization: Basic <base64(username+password)> . Então, em sua configuração HAProxy, o seguinte deve funcionar:

 ...
 balance roundrobin
 balance hdr(Authorization)
 ... 
    
por 29.01.2014 / 13:20