我有 haproxy v1.5.4,可以使用 http 和 https。我将 *:80 和 :*443 绑定到相同的前端并使用相同的 acl。
我想创建一个 http -> https 重定向
frontend http-in
bind *:80
bind *:443 ssl crt /etc/pki/tls/certs/...
...
acl is_office path_beg /office
http-request redirect scheme https if !{ ssl_fc } is_office
use_backend office if is_office
这导致
10.XXXXX:36909 [16/Dec/2015:17:23:07.678] http-in/2: SSL handshake failure
当我通过 http 访问时(期望重定向)
如果我通过 https 访问,那么它会正确到达后端并通过 443 代理到服务。
backend office
balance roundrobin
server backbone-daily 10.XXXXXX:443 ssl check verify none
自签名证书无需重定向即可验证并运行。感觉就像我在重定向阶段遗漏了一些东西。
非常感谢任何帮助
由于我们使用带有 OPNsense 的 HAProxy 插件,该插件只有 GUI,因此我无法给出包含工作代码的答案。不过,我可以回顾一下最终使我们成功的步骤。
- 照常设置映射规则
- 设置规则 HTTP_REDIRECT 不带任何条件但使用函数
http-request redirect scheme https
- Create two公共服务,一个用于端口 443,一个用于端口 80
- 使用 SSL 卸载和映射规则设置 443 的公共服务
- 为80人提供公共服务withoutSSL 卸载,仅您的 HTTP_REDIRECT 规则
我怀疑这会转化为类似这样的代码:
frontend http-in
bind *:443 ssl crt /etc/pki/tls/certs/...
use_backend office if is_office
frontend no-ssl-http-in
bind *:80
http-request redirect scheme https
希望这对仍在寻找解决方案的人有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)