我有一个负载平衡器监听端口80和443,但由于安全策略,负载平衡器和Web服务器之间的通信必须加密。我试图生成从http到https的重定向,但是通常的方法不起作用,可能是因为iis无法区分http和https上的原始请求之间的区别。这是因为当请求到达web服务器时,它已经被加密并从端口443下来。
现在,我正在使用带mods的rewrite模块到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页面。
有什么想法吗?

最佳答案

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

关于http - HTTP到HTTPS重定向到端口443上的Load Balancer之后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9590975/

10-12 05:16