У меня есть два сервера с одинаковым 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 ..
В документации по схеме перенаправления
сказано
«При использовании схемы перенаправления» заголовок «Местоположение» создается конкатенация с ": //", затем первое вхождение "Host" заголовок, а затем путь URI, включая строку запроса ...
Проблема: используется заголовок Host
, а есть ваш 8080
...
Вот возможное решение:
http-request replace-header Host ^(.*?)(:[0-9]+)?$ \1:8443
http-request redirect scheme https if !{ ssl_fc }
Это заменяет заголовок Host
на правильный порт ...