Configuración del proxy inverso HAProxy

Configuración del proxy inverso HAProxy

Quiero migrar algunos sitios web a un nuevo servidor. Se necesitan un par de días para realizar todos los cambios de DNS, por lo que quería configurar un proxy inverso HAProxy para redirigir todo el tráfico desde la ubicación anterior a la nueva. No tengo mucha experiencia con esa configuración. Al visitar un dominio, aparece un error que dice:

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

Esta es la configuración que utilicé (con dirección IP oculta):

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 }

Respuesta1

Este error significa que el backend no se considera "activo".

Primero asegúrese de que el servidor backend esté ejecutándose y sea accesible desde la máquina HAProxy, por ejemplo, telnet x.x.x.x 80y asegúrese de que se conecte.

Si puede establecer una conexión exitosamente, lo segundo que debe verificar es si el backend no pasa la verificación. Intente eliminar option httpchky elimínelo checkde la serverlínea. (Cuando solo tienes un servidor backend, una verificación no es de gran valor, pero siempre puedes volver a agregarla más tarde)

Puede ser que Host: localhostesté devolviendo algo inusual en el cheque.

información relacionada