Usando o HAProxy para encaminhamento transparente e redirecionamento seletivo

1

Estou configurando uma instância haproxy temporária para ajudar a testar um novo back-end para um aplicativo para iphone. Em vez de ter um aplicativo especialmente produzido ou um jailbreak, meu plano é configurar um proxy para o qual todos os dados do telefone passem, mas que ele corresponda aos cabeçalhos de host e os encaminhe para os novos servidores que ainda não estão ativos. Em resumo, eu quero que o haproxy aja como um proxy aberto, além de alguns nomes de host específicos. Combinar os nomes de host e encaminhá-los está funcionando perfeitamente, mas não consigo fazer o bit de proxy aberto funcionar. Estou usando um pacote haproxy 1.4.18 no Ubuntu Precise com configurações globais de estoque, mais essas configurações de proxy:

frontend myapp
    bind 0.0.0.0:8080
    default_backend passthrough
    acl mydomain hdr_end(Host) .example.com
    use_backend front if mydomain

backend front
    server front 127.0.0.1:80

backend passthrough
    server ???

Assim, o frontend fica na porta 8080, padronizando as solicitações para o backend passthrough . Antes de fazer isso, verifica o acl para ver se a solicitação é para um nome de host no meu domínio e, se for, encaminha para o aplicativo local.

O problema é com esse backend de passthrough . Eu quero passar solicitações diretamente para o host solicitado, não para um ponto final local. A configuração que eu coloquei lá não vai funcionar, mas eu não sei o que dizer. Por exemplo, se eu fizer uma solicitação para http://www.serverfault.com , isso não corresponderia à minha ACL, portanto, gostaria que ela fosse encaminhada diretamente para serverfault, não para um servidor local. Não tenho certeza de qual diretiva fará isso em um back-end, ou se há alguma diretiva de frontend que faça isso. É mais ou menos um não operacional no que diz respeito ao proxy.

(Sim, eu sei que os proxies abertos são ruins; esta é uma configuração de teste temporária, rodando interativamente por apenas alguns minutos de cada vez)

Atualizar : descobri que option http_proxy faz exatamente o que eu preciso, além de não fazer pesquisas de DNS, apenas IPs explícitos, então um back-end como esse está quase lá:

backend passthrough
    option http_proxy
    option httpclose

Eu sei que provavelmente poderia usar outra coisa, mas eu realmente gosto de haproxy!

    
por Synchro 11.02.2013 / 16:22

2 respostas

1

Não há como configurar o haproxy para fazer isso por você. Os servidores de backend no haproxy precisam ser nomeados explicitamente.

Você não poderia simplesmente usar um servidor DNS dedicado para direcionar o telefone para o servidor correto?

    
por 11.02.2013 / 16:27
1

você pode usar o haproxy como um proxy http simples, com a seguinte configuração -

backend direct_forward
option httpclose
option http_proxy

você pode ler mais sobre aqui

    
por 05.12.2016 / 17:51

Tags