我想將一些網站遷移到新伺服器。完成所有 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
您的支票中可能會退回一些不尋常的東西。