การกำหนดค่าพร็อกซีย้อนกลับ HAProxy

Aug 18 2020

ฉันต้องการย้ายบางเว็บไซต์ไปยังเซิร์ฟเวอร์ใหม่ ใช้เวลาสองสามวันในการเปลี่ยนแปลง 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 }

คำตอบ

tater Aug 18 2020 at 20:56

ข้อผิดพลาดนี้หมายความว่าแบ็กเอนด์ไม่ได้รับการพิจารณา "ขึ้น"

ขั้นแรกตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์แบ็กเอนด์กำลังทำงานและเข้าถึงได้จากเครื่อง HAProxy เช่นtelnet x.x.x.x 80และตรวจสอบให้แน่ใจว่าเชื่อมต่อ

หากคุณสามารถเชื่อมต่อได้สำเร็จสิ่งที่สองที่ต้องตรวจสอบคือแบ็กเอนด์ล้มเหลวในการตรวจสอบหรือไม่ ลองลบoption httpchkและลบออกcheckจากserverบรรทัด (เมื่อคุณมีเซิร์ฟเวอร์แบ็กเอนด์เพียงเครื่องเดียวเช็คนั้นไม่ได้มีมูลค่ามหาศาล แต่คุณสามารถเพิ่มกลับได้ในภายหลัง)

อาจเป็นไปได้ว่าคุณHost: localhostส่งคืนสิ่งผิดปกติในเช็ค