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变量,以指示安全与非安全。