У меня есть два сервера с одинаковым 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
заголовок с правильным портом ...