AWS负载均衡器后面的ASP.NET Core 2.1 HTTPS重定向?

Posted

技术标签:

【中文标题】AWS负载均衡器后面的ASP.NET Core 2.1 HTTPS重定向?【英文标题】:ASP.NET Core 2.1 HTTPS Redirection behind AWS Load Balancer? 【发布时间】:2018-12-04 12:05:04 【问题描述】:

我已采取的步骤:

    在 Elastic Beanstalk 中的负载均衡器上启用 80 HTTP -> 80 HTTP 和 443 HTTPS -> 80 HTTP 将我的 Route53 托管区域的 www 和 apex A 记录别名到我的负载均衡器 设置 SSL 证书 使用带有 HTTPS 重定向的默认 ASP.NET React 模板 在 .csproj 中添加了 <RuntimeIdentifier>win-x64</RuntimeIdentifier>,因为 EB 还没有使用 2.1。 使用 Visual Studio AWS 工具部署

什么有效:https://www.example.com有效https://example.com有效

什么不起作用:http://example.com 不会重定向到 https://example.comhttp://www.example.com 不会重定向到 https://www.example.com

我知道过去您必须编写自定义扩展方法才能使其与 AWS LB 一起使用。有人有使用标准模板的工作示例吗?

【问题讨论】:

您尝试过 x-forwarded 标头吗? Here更多信息 是的,对我不起作用。肯定有人用 EB 和 AWS 负载均衡器和 Core 2.1 做到了这一点 您能提供更多信息吗?...也许,您可以在不支持 https 的情况下配置 asp.net 核心项目,并让反向代理(IIS、nginx 等)进行重定向工作。 This可以帮到你 你搞定了吗?寻找解决方案 【参考方案1】:

也许这个解决方案对您的环境来说有点矫枉过正。但你可以set up a Cloudfront distribution。您应该将您的 Elastic beanstalk url 作为源并将您的 https://example.com 放在 CNAME 下,然后您可以决定是否需要灵活的 SSL,您可以将与源的通信指定为仅 HTTP,或者如果您想要端到端加密,您可以仅指定 HTTPS (我认为这将是您特定情况下的方法,因为您已将弹性负载均衡器配置为将所有请求从端口 443 转发到端口 80)。然后在行为下,您可以选择将 http 重定向到 https 的选项,每个到 http://example.com 的请求都会被 Cloudfront 自动重定向到 https://example.com

希望对你有帮助

【讨论】:

以上是关于AWS负载均衡器后面的ASP.NET Core 2.1 HTTPS重定向?的主要内容,如果未能解决你的问题,请参考以下文章

无法为在 Elastic Beanstalk AWS 上运行 ASP.NET 的网站强制使用 HTTPS(使用经典负载均衡器)

ASP.NET Core 搭载 Envoy 实现微服务的负载均衡

ASP.NET Core 搭载 Envoy 实现微服务的负载均衡

2021-06-24 .NET高级班 66-ASP.NET Core EFCore数据库(数据库增删改查封装集成[读写分离,负载均衡])

ASP.NET Core 中使用负责均衡时获取客户端 IP

在ASP.NET Core微服务架构下使用数据库切分和扩展, 并用JMeter进行负载测试