Rewrite

我需要使用多個 ssl 埠配置 haproxy

  • February 19, 2017

我有兩台伺服器,它們的 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

對於 HTTPS,如何通過 8443 重定向 8080 ..

的文件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標題…

引用自:https://serverfault.com/questions/831065