
バックエンド サーバーに 2 つのポートが開いています。1 つは https リクエスト用、もう 1 つは Websocket リクエスト用です。Websocket は https ではなく http を使用します。haproxy インスタンスがクライアント リクエストに http 301 リダイレクトを送信して、クライアントを直接バックエンド サーバーにリダイレクトするようにします。リダイレクト後、クライアントは Websocket 接続か https 接続かに関係なく、バックエンド サーバーと直接通信する必要があります。以下は私の構成です。トラフィックを適切にリダイレクトするという意味では機能しますが、最初のサーバーにのみリダイレクトされ、2 番目のサーバーにはリダイレクトされません。なぜ両方のサーバーにヒットするのにラウンドロビンを使用しないのですか?
defaults
mode http
timeout connect 5000ms
timeout client 3000ms
timeout server 3000ms
timeout tunnel 0
frontend server-frontend
bind LB_IP:443
http-request redirect code 301 prefix https
default_backend server-backend
backend server-backend
balance roundrobin
server s1 SERVER1_IP:8443
server s2 SERVER2_IP:8443
frontend websocket-frontend
bind LB_IP:80
http-request redirect code 301 prefix http
default_backend websocket-backend
backend websocket-backend
balance roundrobin
server ws1 SERVER1_IP:8080
server ws2 SERVER2_IP:8080