HAProxy Reverse-Proxy-Konfiguration

HAProxy Reverse-Proxy-Konfiguration

Ich möchte einige Websites auf einen neuen Server migrieren. Es dauert ein paar Tage, bis alle DNS-Änderungen vorgenommen sind. Deshalb wollte ich einen HAProxy-Reverse-Proxy einrichten, um den gesamten Datenverkehr vom alten Standort zum neuen Standort umzuleiten. Ich habe nicht viel Erfahrung mit einer solchen Konfiguration. Beim Besuch einer Domain erhalte ich eine Fehlermeldung mit folgendem Inhalt:

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

Dies ist die Konfiguration, die ich verwendet habe (mit versteckter IP-Adresse):

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 }

Antwort1

Dieser Fehler bedeutet, dass das Backend nicht als „aktiv“ gilt.

Stellen Sie zunächst sicher, dass der Backend-Server ausgeführt wird und von der HAProxy-Maschine aus zugänglich ist, telnet x.x.x.x 80und stellen Sie beispielsweise sicher, dass eine Verbindung hergestellt wird.

Wenn Sie erfolgreich eine Verbindung herstellen können, müssen Sie als Zweites prüfen, ob das Backend eine Prüfung nicht besteht. Versuchen Sie option httpchk, und checkaus der serverZeile zu entfernen. (Wenn Sie nur einen Backend-Server haben, ist eine Prüfung nicht sehr wertvoll, Sie können sie aber später jederzeit wieder hinzufügen.)

Es kann sein, dass Ihr Host: localhostbei der Überprüfung etwas Ungewöhnliches zurückgibt.

verwandte Informationen