Мне нужно настроить haproxy с несколькими портами ssl

У меня есть два сервера с одинаковым URL, но номер порта может измениться.

Я хочу для перенаправления этих двух URL-адресов HTTPS.

Если я введу свой первый URL-адрес ( http://example.com ), я хочу, чтобы он перенаправил его на https://example.com .

Если я введу второй URL ( http://example.com:8080 ), я хочу, чтобы он перенаправлялся на https://example.com:8080 .

См. Мои конфигурации:

frontend www-HTTP
  bind *:80
  bind *:443 ssl crt /etc/apache2/ssl/apache.pem
  reqadd X-Forwarded-Proto:\ https
  default_backend tcp-backend
  mode tcp

frontend TCP-HTTP
  bind *:8080
  bind *:8443 ssl crt /etc/apache2/ssl/paritech.pem
  reqadd X-Forwarded-Proto:\ https
  default_backend www-backend
  mode tcp

backend www-backend
  redirect scheme https if !{ ssl_fc }
  server dev.example.com 192.168.1.120:8080 check

backend TCP-backend
  redirect scheme https if !{ ssl_fc }
  server qa.example.com 192.168.1.120:80 check

Как я могу перенаправить 8080 через 8443 для HTTPS ..

2
задан 7 February 2017 в 15:05
1 ответ

В документации по схеме перенаправления сказано

«При использовании схемы перенаправления» заголовок «Местоположение» создается конкатенация с ": //", затем первое вхождение "Host" заголовок, а затем путь URI, включая строку запроса ...

Проблема: используется заголовок Host , а есть ваш 8080 ...

Вот возможное решение:

http-request replace-header Host ^(.*?)(:[0-9]+)?$ \1:8443
http-request redirect scheme https if !{ ssl_fc }

Это заменяет заголовок Host на правильный порт ...

3
ответ дан 3 December 2019 в 10:35

Теги

Похожие вопросы