我需要使用多个 ssl 端口配置 haproxy

par*_*rne 3 rewrite url haproxy

我有两台具有相同 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
Run Code Online (Sandbox Code Playgroud)

如何通过 8443 重定向 8080 以进行 HTTPS..

小智 5

的文档redirect scheme

使用“重定向方案”,然后“位置”标头是通过连接“://”,然后是“主机”标头的第一次出现,然后是 URI 路径,包括查询字符串...

有问题:它正在使用Host标题,而您的8080...

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

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

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