Перенаправление URL и TCP-прокси в haproxy

Перенаправление URL и TCP-прокси в haproxy

На сервере только с одним IPv4 и работающим HAProxy я хочу перенаправить URL-адрес и проксировать другой на уровне TCP для целей сквозной передачи SSL.

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, при загрузке страниц возникают ошибки.

Как мне действовать дальше?

РЕДАКТИРОВАТЬ

Я попытался сделать 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

Связанный контент