2016-05-27 28 views
0

我试图找出是否HTTPS在地址栏,因为我有HAPROXY之前SSL终止,但我希望HAPROXY做重定向,如果它是HTTP(有点奇怪的请求我知道)。检测HTTPS没有SSL终止

我试过: 重定向方案HTTPS如果{} ssl_fc

但它在一个永无止境的循环,因为它的数据包已经没有SSL结束了!有没有另一种方法来获取地址栏上的前缀?它也可以用于多个域,所以试图用通配符来做到这一点。

回答

0

我面前有HAProxy的

我假定你的意思SSL终止上ELB SSL终结?

如果是这样的:

redirect scheme https unless { hdr(x-forwarded-proto) -m str https } 

ELB在HTTP模式下增加了X-Forwarded-Proto: https对SSL连接。否则,该值设置为http。生成一个重定向,除非头部值符合你的期望。

+0

这正是我想要做的,并且你的修复工作完美,谢谢。我只是没有把那个包装更多的通用修复。 – AndrewL

+0

不,就是这样。 'ssl_fc'(仅在** f ** ront-end ** c **连接上的SSL/TLS)只能提取HAProxy本身的前端套接字。这在浏览器直接连接到代理服务器时起作用,但它并不知道前面是否有设备正在终止SSL,因此标头提供了提示。 –