Назад | Перейти на главную страницу

Мне нужно настроить 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 ..

Документация redirect scheme говорит

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

Проблема в том, что он использует Host Заголовок и вот твой 8080...

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

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

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