咨询如何通过HAproxy重定向http到https



我试图配置HAproxy,使其将http流量重定向到https,但Chrome失败了"ERR_SSL_PROTOCOL_ERROR"。但是,如果我直接使用https,它将工作。

例如:如果我输入https://:5443,它将显示后端服务器的页面。如果我输入http://:5006,它应该被重定向,但失败了,上面提到的错误。

下面是我的配置:

frontend    simple_webapp    
mode    http
bind    *:5006
bind    *:5443  ssl crt /root/Downloads/simple_webapp_all.pem
http-request redirect scheme https unless { ssl_fc }
default_backend simple_webapp
backend simple_webapp
balance     roundrobin
server      centos8-1 <server ip1>:5006 check 
server      centos8-2 <server ip2>:5006 check

如果配置错误,请纠正我。

您可能期望更改了port with scheme,但是您没有。您对http://foo:5006/的请求被重定向到不支持SSL的https://foo:5006。如果你在URL中省略端口,那么浏览器和web客户端就足够聪明,可以为HTTP使用端口80,为HTTPS使用端口443。这就是为什么它适用于默认端口。所以试着把你的重定向改成这样:

http-request redirect prefix https://your_domain_as_explicit_string:5443 unless { ssl_fc }

你可以试试头,比如

http-request redirect prefix https://%[hdr(host),regsub(:5006,:5443)] unless { ssl_fc }

hdr(host)在本例中包括:5006,因此regsub改变了

一旦我将端口从5006更改为其他端口,它就可以正常工作了。不知道这个端口发生了什么。

最新更新