我需要配置 haproxy 有多个 ssl 端口

我需要配置 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?

答案1

文档redirect scheme

使用“重定向方案”,则“Location”标头通过与“://”连接构建,然后是第一次出现的“Host”标头,然后是 URI 路径,包括查询字符串...

存在这样的问题:它使用了HostHeader,并且存在您的8080...

这是一个可能的解决方案:

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

Host用正确的端口替换标题......

相关内容