haproxy の URL リダイレクトと TCP プロキシ

haproxy の URL リダイレクトと TCP プロキシ

IPv4 が 1 つだけあり、haproxy を実行しているサーバーで、SSL パススルーの目的で、URL をリダイレクトし、TCP レベルで別の URL をプロキシしたいと考えています。

frontend https-frontend
  bind *:443
  mode tcp
  option tcplog
  tcp-request inspect-delay 5s
  tcp-request content accept if { req_ssl_hello_type 1 }
  use_backend proxy-backend if { req.ssl_sni -i proxied-url.com }
  redirect prefix https://url-rewrited.com code 301 if  { req.ssl_sni -i domain-for-redirect.com }

ただし、リダイレクト プレフィックスには http モードが必要であり、プロキシ パススルーには tcp モードが必要です。

[WARNING] 347/153600 (1324) : config : 'redirect' rules ignored for frontend 'https-frontend' as they require HTTP mode.

443 で 2 つのフロントエンド バインディングを使用すると、ページの読み込み時にエラーが発生します。

どうすれば進めますか?

編集

リダイレクト用のhttpバックエンドを試してみました

frontend https-frontend
  bind *:443
  mode tcp
  option tcplog
  tcp-request inspect-delay 5s
  tcp-request content accept if { req_ssl_hello_type 1 }
  use_backend proxy-backend if { req.ssl_sni -i proxied-url.com }
  use_backend redirect-backend if  { req.ssl_sni -i domain-for-redirect.com }

backend redirect-backend
  mode http
  option ssl-hello-chk
  redirect prefix https://url-rewrited.com code 301 if { req.ssl_sni -i domain-for-redirect.com }

しかし、domain-for-redirect.com にアクセスすると ERR_SSL_PROTOCOL_ERROR が発生します。バックエンドで証明書をロードするにはどうすればよいでしょうか?

答え1

有効なまたは自己署名された SSL 証明書で ssl オプションを追加する必要があります: 代わりに、bind *:443 を使用してください:bind *:443 ssl crt /etc/ssl/private/certFileName.pem

関連情報