HAProxy リバースプロキシ設定

HAProxy リバースプロキシ設定

いくつかの Web サイトを新しいサーバーに移行したいと考えています。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。(バックエンド サーバーが 1 つしかない場合、チェックはそれほど重要ではありませんが、後でいつでも追加し直すことができます)

Host: localhost小切手で何か異常なものが返されている可能性があります。

関連情報