Haproxy
在 haproxy 上使用 ssl 將非 www 重定向到 www
我想要實現的是重定向:
http://test.com --> https://www.test.com http://www.test.com/ -> https://www.test.com https://test.com --> https://www.test.com
我目前的 haproxy conf:
global log 127.0.0.1 local0 notice maxconn 3000 user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull retries 3 option redispatch timeout connect 5000 timeout client 5000 timeout server 5000 frontend http-in bind *:80 bind *:443 ssl crt /etc/letsencrypt/live/www.test.com/www.test.com.pem mode http http-request redirect prefix https://www.%[hdr(host)] code 301 if { hdr(host) -i test.com } /// THIS DOESN'T WORK option forwardfor redirect scheme https code 301 if !{ ssl_fc } . . .
我的問題:
https://test.com>和<http://test.com 不會重定向到 https://www.test.com
我需要https://test.com的 ssl 證書嗎?如果是,如何將其添加到 haproxy conf 中?
您在那裡的
redirect
命令只是從http
to重定向https
- 它不操縱 URL 的任何其他部分,因此您看到的行為是預期的。對於 HTTP -> HTTPS 重定向,您可能希望使用:
http-request redirect prefix https://www.test.com if !{ ssl_fc }
這將導致所有重定向到目標
https://www.test.com
,無論來源如何。但它不會解決https://test.com
tohttps://www.test.com
問題,因為條件 (if !{ ssl_fc }
) 不匹配。您可能可以使用 ACL 添加所需的匹配項,如下所示:
acl http ssl_fc,not acl host_www hdr_beg(host) www. http-request redirect prefix https://www.test.com if http or !host_www