【发布时间】:2016-05-27 19:45:31
【问题描述】:
我试图找出地址栏中是否有 https,因为我在 HAPROXY 之前有 SSL 终止,但如果它是 HTTP,我希望 HAPROXY 进行重定向(我知道有点奇怪的请求)。
我尝试了: 重定向方案 https if !{ ssl_fc }
但它最终会进入一个永无止境的循环,因为它的数据包已经没有 SSL。有没有另一种方法来获取地址栏上的前缀?它也适用于多个域,因此请尝试使用通配符。
【问题讨论】:
标签: haproxy
我试图找出地址栏中是否有 https,因为我在 HAPROXY 之前有 SSL 终止,但如果它是 HTTP,我希望 HAPROXY 进行重定向(我知道有点奇怪的请求)。
我尝试了: 重定向方案 https if !{ ssl_fc }
但它最终会进入一个永无止境的循环,因为它的数据包已经没有 SSL。有没有另一种方法来获取地址栏上的前缀?它也适用于多个域,因此请尝试使用通配符。
【问题讨论】:
标签: haproxy
我在 HAPROXY 之前有 SSL 终止
我假设您的意思是 SSL 在 ELB 上终止?
如果是这样:
redirect scheme https unless { hdr(x-forwarded-proto) -m str https }
http 模式下的 ELB 在 SSL 连接上添加 X-Forwarded-Proto: https。否则,该值设置为http。除非标头值符合您的预期,否则生成重定向。
【讨论】:
ssl_fc (SSL/TLS on front-end connection) fetch 仅指 HAProxy 本身的前端套接字。这在浏览器直接连接到代理时有效,但它不知道前面是否有实际终止 SSL 的设备,因此标头提供了提示。