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?
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!
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?
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
Tags haproxy