HAProxy ters proxy yapılandırması

Aug 18 2020

Bazı web sitelerini yeni bir sunucuya taşımak istiyorum. Tüm DNS değişikliklerinin yapılması birkaç gün sürüyor, bu yüzden tüm trafiği eski konumdan yeni konuma yeniden yönlendirmek için bir HAProxy ters proxy kurmak istedim. Böyle bir yapılandırma konusunda pek tecrübeli değilim. Bir alanı ziyaret ederken şunu söyleyen bir hata alıyorum:

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

Bu, kullandığım yapılandırma (gizli IP adresiyle):

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 }

Yanıtlar

tater Aug 18 2020 at 20:56

Bu hata, arka ucun "yukarı" olarak kabul edilmediği anlamına gelir.

Öncelikle arka uç sunucusunun çalıştığından ve HAProxy makinesinden erişilebilir telnet x.x.x.x 80olduğundan emin olun , örneğin ve bağlandığından emin olun.

Başarılı bir şekilde bağlantı kurabilirseniz, kontrol edilecek ikinci şey, arka ucun bir kontrolde başarısız olup olmadığıdır. Kaldırmayı deneyin option httpchkve kaldırmak checkgelen serverhat. (Yalnızca bir arka uç sunucunuz olduğunda, bir kontrol çok değerli değildir, ancak daha sonra istediğiniz zaman geri ekleyebilirsiniz)

Host: localhostÇekin içinde olağandışı bir şey iade ediyor olabilirsiniz .