应用程序负载均衡器重定向

Application Load Balancer Redirects

我有一个 EC2 实例,它在 IIS 中托管一个网站 运行。我还设置了一个带有 HTTPS 侦听器的 AWS Application Load Balancer,我已将我的网站的 SSL 证书(保存在 AWS Certificate Manager 中)添加到其中。 HTTPS 侦听器将流量重定向到我的目标组,而目标组又指向我的 EC2 实例。 EC2 实例使用安全组只允许来自负载均衡器的流量。

首先,我认为 Application Load Balancer 解密 SSL 流量并因此使用 HTTP 将其转发到我的目标组(换句话说,我的 EC2 实例的安全组只需要接受 HTTP来自负载均衡器的流量,我可以从 IIS 中删除我的 SSL 证书)?

其次,我目前遇到的主要问题是该站点具有某些资源(CSS、JavaScript 等)的相对路径。因此,当我浏览网站时,我的 FireFox 控制台出现混合内容错误。我在我的负载均衡器中设置了一个 HTTP 侦听器以将流量重定向到 HTTPS,但这似乎不适用于相对路径。

我并不是特别想编辑站点以将相对路径更改为完全限定的 HTTPS URL,因为它是一个非常复杂的内容管理系统。此外,在使用负载均衡器之前,该站点可以完美地提供内容(DNS 条目指向我的 EC2 实例的 public IP 地址,并且 IIS 中有一个重写规则来处理非 HTTPS 流量)。

如有任何建议,我们将不胜感激。

对于您的第一个查询,我想是的。您可以从 IIS 中删除我的 SSL 证书并指向 EC2 实例的安全组以接受来自负载均衡器的 HTTP 流量。

关于相对路径的问题,请查看link:After introducing ALB, Mixed Content Error happened

我认为这会有所帮助。

打开浏览器并单击“网络”选项卡并检查这些呼叫是否应该转到其他使用 HTTP 的地方,这些是来自您的应用程序的传出呼叫,重定向不会解决这些问题。看截图

在你的情况下似乎是同样的错误,你从其他方面提供图像,而不是来自 EC2,这意味着 EC2 服务器应该回答的那些请求可以正常工作,但你的代码试图拉 JS文件或其他资源这些是传出呼叫,这与 LB 重定向规则无关。

最好将您的应用程序和所有 URL 更新为 https。

When a user visits a page served over HTTPS, their connection with the web server is encrypted with TLS and is therefore safeguarded from most sniffers and man-in-the-middle attacks. An HTTPS page that includes content fetched using cleartext HTTP is called a mixed content page. Pages like this are only partially encrypted, leaving the unencrypted content accessible to sniffers and man-in-the-middle attackers. That leaves the pages unsafe.

感谢您的回复。我设法弄清了第二期的真相。该站点的 web.config 有一个重写规则,该规则强制 URLs 小写(与 SEO 有关)。这导致了在提供 CSS 和 JS 文件时出现问题。我已经对这条规则进行了必要的更新,它现在似乎可以工作了(参见 IIS URL 将模块 url 重写为小写)。

对于第一个问题,不需要在 IIS 网络服务器上安装 SSL 证书 - 它们只需要在 AWS Certificate Manager 中安装,然后分配给负载均衡器,后者有 2 个侦听器 - 一个将 HTTPS 流量定向到我的目标组,将 HTTP 流量重定向到 HTTPS。

我的 IIS 站点现在只有 HTTP 绑定并且只接受来自负载均衡器的 HTTP 流量。

似乎一切正常!