端口443上的Load Balancer后面的HTTP到HTTPS重定向

时间:2012-03-06 20:02:53

标签: http redirect https

我有一个负载均衡器监听端口80和443,但由于安全策略,负载均衡器和Web服务器之间的流量必须加密。我正在尝试从http到https生成重定向,但通常的方法不起作用,因为IIS无法区分http与https上的原始请求之间的区别。这是因为当请求到达Web服务器时,它已经被加密并且从端口443下来。

现在我正在使用带有mods到web.config的重写模块,并且重定向适用于80-> 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页面。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我相信您可以设置负载均衡器来执行从http到https的重定向。您还可以设置负载均衡器以发送额外的HTTP标头或CGI变量,指示安全与非安全。