我在 /etc/haproxy/haproxy.cfg 中有以下配置
> frontend LB
> bind *:80
> reqadd X-Forwarded-Proto:\ http
> default_backend LB
>
> frontend LBS
> bind *:443 ssl crt /etc/ssl/xy.pem
> reqadd X-Forwarded-Proto:\ https
> default_backend LB
>
> backend LB *:80
> redirect scheme https if !{ ssl_fc }
> mode http
> stats enable
> stats hide-version
> stats uri /stats
> stats realm Haproxy\ Statistics
> stats auth xxxx:yyyyyy
> balance roundrobin
> option httpchk
> option httpclose
> option forwardfor
> cookie LB insert
> server web1-srv xx.xx.xxx.xxx:80 cookie web1-srv check
> server web2-srv xx.xx.xxx.xxx:80 cookie web2-srv check
从日志中我感觉到 https 请求不起作用
[07/8月/2018:12:35:01.402] LB LB/10/-1/-1/-1/10 302 121 - - LRNN 0/0/0/0/3 0/0 “GET/HTTP/1.1”
答案1
您的前端 LBS 会“卸载”https,并将 http 请求传递给后端 LB。然后后端 LB 会重定向到 https。正如您在日志中看到的那样:302。
顺便说一句,我认为您应该从后端删除“*:80”。前端 LB 绑定到端口 80。