roteamento de domínio haproxy

2

Estou tentando configurar o haproxy para rotear para os back-ends, dependendo do subdomínio usado na solicitação http. Por exemplo, eu tenho um servidor web regular rodando na porta 8000 e um servidor de aplicativos esperando conexões websocket rodando na porta 8001 no mesmo endereço IP. Agora quero que, se o usuário clicar em app.mydomain.com:80, ele seja redirecionado para a porta 8001 e, se acessar www.mydomain.com (ou qualquer outro subdomínio), ele seja redirecionado para o servidor da Web na porta 8000.

Eu criei uma configuração simples que eu acho que deve realizar isso (ela é baseada em esta questão ):

frontend all 0.0.0.0:80
  timeout client    86400000
  acl aclMS1 hdr_dom(host) -i app
  use_backend   beMS1   if aclMS1
  default_backend   beWEB

backend beMS1
  timeout server 86400000
  server srvMS1 localhost:8001 maxconn 200 check

backend beWEB
  server webserver localhost:8000 maxconn 200 check

No entanto, parece que isso não funciona. Eu sempre acabo no meu servidor na porta 8000. O que estou fazendo errado?

    
por Daniel Baulig 22.07.2011 / 23:11

1 resposta

1

Eu descobri como fazê-lo funcionar. Eu estava faltando a opção mode http. Minha configuração agora é assim e funciona como um encanto:

defaults
  mode http
  timeout server 50000ms
  timeout server 50000ms
  timeout server 50000ms

frontend all 0.0.0.0:80
  timeout client    86400000
  acl aclMS1 hdr_dom(host) -i app
  use_backend   beMS1   if aclMS1
  default_backend   beWEB

backend beMS1
  timeout server 86400000
  server srvMS1 localhost:8001 maxconn 200 check

backend beWEB
  server webserver localhost:8000 maxconn 200 check
    
por 23.07.2011 / 01:26