Конфигурация обратного прокси-сервера HAProxy

Конфигурация обратного прокси-сервера HAProxy

Я хочу перенести некоторые веб-сайты на новый сервер. Требуется несколько дней, чтобы внести все изменения в DNS, поэтому я хотел настроить обратный прокси-сервер HAProxy, чтобы перенаправить весь трафик со старого адреса на новый. У меня не очень большой опыт работы с такой конфигурацией. При посещении домена я получаю сообщение об ошибке:

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

Вот конфигурация, которую я использовал (со скрытым IP-адресом):

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 }

решение1

Эта ошибка означает, что бэкэнд не считается «работающим».

Сначала убедитесь, что внутренний сервер запущен и доступен с машины HAProxy, например, telnet x.x.x.x 80и убедитесь, что он подключается.

Если вы можете успешно установить соединение, второе, что нужно проверить, это не проваливает ли бэкенд проверку. Попробуйте удалить option httpchkи удалить checkиз serverстроки. (Когда у вас только один бэкенд-сервер, проверка не имеет большого значения, но вы всегда можете добавить ее позже)

Возможно, Host: localhostв вашем чеке указано что-то необычное.

Связанный контент