我有两个服务器,它们具有相同的 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?
答案1
文档redirect scheme
说
使用“重定向方案”,则“Location”标头通过与“://”连接构建,然后是第一次出现的“Host”标头,然后是 URI 路径,包括查询字符串...
存在这样的问题:它使用了Host
Header,并且存在您的8080
...
这是一个可能的解决方案:
http-request replace-header Host ^(.*?)(:[0-9]+)?$ \1:8443
http-request redirect scheme https if !{ ssl_fc }
Host
用正确的端口替换标题......