Cấu hình proxy ngược HAProxy

Aug 18 2020

Tôi muốn di chuyển một số trang web sang một máy chủ mới. Phải mất vài ngày để thực hiện xong tất cả các thay đổi DNS, vì vậy tôi muốn thiết lập proxy ngược HAProxy để chuyển hướng tất cả lưu lượng truy cập từ vị trí cũ sang vị trí mới. Tôi không có nhiều kinh nghiệm với một cấu hình như vậy. Khi truy cập một miền, tôi gặp lỗi nói:

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

Đây là cấu hình tôi đã sử dụng (với địa chỉ IP ẩn):

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 }

Trả lời

tater Aug 18 2020 at 20:56

Lỗi này có nghĩa là chương trình phụ trợ không được coi là 'lên'.

Trước tiên, hãy đảm bảo rằng máy chủ phụ trợ đang chạy và có thể truy cập được từ máy HAProxy, ví dụ: telnet x.x.x.x 80và đảm bảo rằng nó kết nối.

Nếu bạn có thể tạo kết nối thành công, điều thứ hai cần kiểm tra là liệu chương trình phụ trợ có bị lỗi hay không. Thử xóa option httpchkvà xóa checkkhỏi serverdòng. (Khi bạn chỉ có một máy chủ phụ trợ, séc không có giá trị lớn, nhưng bạn luôn có thể thêm lại sau)

Có thể là của bạn Host: localhostđang trả lại một cái gì đó bất thường trong séc.