Configuração de proxy reverso HAProxy

Configuração de proxy reverso HAProxy

Quero migrar alguns sites para um novo servidor. Demora alguns dias para fazer todas as alterações de DNS, então eu queria configurar um proxy reverso HAProxy para redirecionar todo o tráfego do local antigo para o novo local. Não tenho muita experiência com essa configuração. Ao visitar um domínio, recebo um erro dizendo:

503 Service Unavailable No server is available to handle this request.

Esta é a configuração que usei (com endereço IP oculto):

global

  log         127.0.0.1 local2

    chroot  /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group   haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend localhost
   bind *:80
   bind *:443 ssl crt /etc/pki/tls/certs/haproxy.pem
   redirect scheme https if !{ ssl_fc }
   mode http
   default_backend node

backend node
    mode http
    option forwardfor
    option httpchk HEAD / HTTP/1.1\r\nHost:localhost
    server dcnode1 x.x.x.x:80 check
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }

Responder1

Este erro significa que o backend não é considerado 'ativo'.

Primeiro, certifique-se de que o servidor backend esteja em execução e acessível a partir da máquina HAProxy, por exemplo, telnet x.x.x.x 80e certifique-se de que ele esteja conectado.

Se você conseguir estabelecer uma conexão com êxito, a segunda coisa a verificar é se o back-end está falhando na verificação. Tente remover option httpchke remova checkda serverlinha. (Quando você tem apenas um servidor back-end, uma verificação não tem grande valor, mas você sempre pode adicioná-la novamente mais tarde)

Pode ser que você Host: localhostesteja retornando algo incomum no cheque.

informação relacionada