【问题标题】:ASP.NET MVC App - AWS Load Balancer Redirect Http to HttpsASP.NET MVC 应用程序 - AWS 负载均衡器将 Http 重定向到 Https
【发布时间】:2018-02-06 06:35:32
【问题描述】:
我最近使用 AWS Elastic Beanstalk 创建了一个 Web 应用程序,并设置了一个 EC2 Classic Load Balancer 以将 HTTP url 重定向到 HTTPS。目前,我可以使用 HTTP 或 HTTPS 访问我的站点,但我希望任何请求都能自动将其发送到 HTTPS。我使用 AWS Toolkit 从 Visual Studio 2015 开发和部署了我的 ASP.NET MVC 应用程序(否则,所有网站功能都已在 AWS 上设置)。我对 AWS 非常陌生,在浏览了许多关于此的帖子后,我无法找到一种强制从 HTTP 重定向到 HTTPS 的方法。我查看了这个网站https://oanhnn.github.io/2016-02-29/how-to-force-https-behind-aws-elb.html,但不确定如何实施所讨论的内容。如果有人知道如何执行此操作或知道要查看的良好文档,我将不胜感激。
【问题讨论】:
标签:
asp.net
asp.net-mvc
amazon-web-services
amazon-ec2
【解决方案1】:
您需要:
- 在您的 Windows 服务器上安装 URL Rewrite。
- 将以下
<rewrite> 部分添加到您的 Web.config 文件中:
Web.config
<configuration>
...
<system.webServer>
...
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>