HTTP到HTTPS重定向到端口443上的负载均衡器后面
问题描述:
我有一个负载均衡器侦听端口80和443,但由于安全策略,负载均衡器和Web服务器之间的流量必须加密。我试图从http生成一个重定向到https,但通常的方法不起作用,可以假定的是,因为IIS无法区分http vs https的原始请求。这是因为当请求到达Web服务器时,它已经被加密,并且已经被加密并且在端口443处。HTTP到HTTPS重定向到端口443上的负载均衡器后面
现在我正在使用带有mods的重写模块到web.config,重定向工作正常 - > LB-> 80流量,但不适用于80-> LB-> 443流量。
这里是我的web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
注意,这是我喜欢的web.config文件的解决方案(如果它可以进行修改,以工作为80-> LB-> 443)是重定向作品对于非ASP.NET页面。
任何想法?
答
我相信你可以设置负载均衡器来执行从http到https的重定向。您还可以设置负载均衡器来发送额外的HTTP标头或CGI变量,以指示安全与非安全。