HTTP 到 HTTPS 重定向到端口 443 上的负载均衡器后面

标签 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 页面。

有什么想法吗?

最佳答案

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

关于HTTP 到 HTTPS 重定向到端口 443 上的负载均衡器后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590975/

相关文章:

java - 如何用 Java 构建一个互联网下载管理器?

java - 如果我向服务器发送带有参数的 get 请求,我会收到 405 Method not allowed by Postman

url - URL缩短器可以传递参数吗?

android - 如何使用 webview 显示 linkedIn 联系人的页面?

http - Safari 不断在本地主机上强制使用 HTTPS

带有 CA 证书问题的 HTTPS SSL 自签名证书

apache - 什么是 Apache 的 OpenSSL 以及为什么一台服务器有它而另一台没有

html - 持久连接根本不起作用

javascript - 强制更新单页应用程序

php - 如果用户已经登录,如何重定向