我的工作场所有一个HAproxy,我们用它来路由到只需要一个公共IP的网络服务器。我们的一些客户希望https有些不需要。
我想在每个后端基础上强制执行https。
我发现了这一点,只是没有说这个配置是用于前端还是后端。也许这对两者都有效?
http-request重定向位置[code] [] []
或者这个:
模式http
重定向方案https if!{ssl_fc}
所以我认为我把它放在了一些后端:
http请求重定向位置https://www.somedomain.com [代码301]
这会有用吗?我们的实验室环境被束缚所以我无法及时测试它。
答案 0 :(得分:3)
我创建了自己的测试后端.. 这有效:
backend lb_customername
mode http
redirect scheme https if !{ ssl_fc }
balance roundrobin
server server1 10.0.0.51:80 maxconn 200
server server2 10.0.0.52:80 maxconn 200
答案 1 :(得分:0)
来自the HAProxy documentation for redirect scheme
May be used in sections
defaults no
frontend yes
listen yes
backend yes
所以这将起作用(从工作部署中复制)
backend https_for_all_traffic
redirect scheme https if !{ ssl_fc }
server https_only 10.21.5.73:80
由于!{ ssl_fc }
检查基本上只是另一个ACL,您甚至可以将其与其他ACL组合并仅转发某些流量:
backend https_for_some_traffic
# Detect traffic to admin pages
acl secure url_beg /admin
# Force any HTTP admin traffic to HTTPS
# the conditions are combined with an implicit AND
redirect scheme https if !{ ssl_fc } secure
server both_http_and_https 10.21.5.73:80