HAproxy redireciona todas as solicitações HTTP de frontend único para backend único (várias portas)

1

Eu tenho haproxy instalado e funciona muito bem, atualmente eu tenho a configuração que se parece com o seguinte

frontend public_http
        # Listen on port 80
        bind *:80
        mode http
        # Define ACLs for each domain
        acl acl_webtest  hdr(host) -i -f /etc/haproxy/acls/webtest
        use_backend back_web_test if acl_webtest

backend back_web_test
        mode http
        balance roundrobin  # Load Balancing algorithm
        option httpchk
        option forwardfor
        server webtest 192.168.0.123:80 weight 1 maxconn 512 check

Como você pode ver, estou redirecionando o tráfego HTTP de entrada para o backend na mesma porta (padrão 80 para HTTP).

Mas minha pergunta:
 É possível ter front-end único sem várias instruções bind *:<port> e redirecionar para um único back-end para o mesmo <port> . MAS apenas tráfego HTTP. Eu sei que a porta padrão para HTTP é 80, mas podemos enviar solicitações HTTP para qualquer porta.

Parece um proxy TCP, mas eu preciso redirecionar para um back-end baseado em domínio, e a camada TCP (OSI 4) não sabe nada sobre domínio.

Então, espero ter descrito meu problema com clareza.

Eu ficaria muito grato por qualquer ajuda.

    
por CROSP 24.12.2016 / 08:54

1 resposta

1

Você pode fazer isso omitindo o : port na linha servidor

frontend public_http
    # Listen on port 80 to 1024, included
    bind :80-1024
    # Listen on ports 8088, 8080, 8000
    bind :8088,:8080,:8000
    mode http
    # Define ACLs for each domain
    acl acl_webtest  hdr(host) -i -f /etc/haproxy/acls/webtest
    use_backend back_web_test if acl_webtest

backend back_web_test
    mode http
    balance roundrobin  # Load Balancing algorithm
    option httpchk
    option forwardfor
    server webtest 192.168.0.123 weight 1 port 80 maxconn 512 check

Com essa configuração, a conexão de back-end será feita na mesma porta em que o cliente se conectou. A palavra-chave da porta separada na linha do servidor é usada para verificações de integridade.

    
por 13.06.2017 / 14:44