asp.net – 通过在弹性beanstalk的负载均衡器中的IIS重写到https重定向到IIS

当你在弹性beanstalk负载均衡器后面时,如何使用IIS的url重写模块强制用户使用ssl?

解决方法

由于一些原因,这比听起来更困难。一,负载均衡器负责ssl,因此从负载均衡器传递的请求永远不会使用ssl。如果使用传统的重写规则,您将获得无限循环的重定向。另一个需要解决的问题是,如果AWS健康检查收到重定向响应,它将失败。

>解决方案的第一步是创建healthcheck.html页面并将其设置在根目录中。内容是什么并不重要。
>设置负载均衡器以使用healthcheck.html文件进行运行状况检查。
>在web.config的< system.webServer>< rewrite>< rules>中添加下面的重写规则。部分:

<rule name="Force Https" stopProcessing="true">
   <match url="healthcheck.html" negate="true" />
   <conditions>
       <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
   </conditions>
   <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>

请注意,规则匹配除了我们的healthcheck文件之外的任何内容。这可以确保负载均衡器的运行状况检查成功,并且不会错误地从负载中丢弃我们的服务器。

负载均衡器在标头中传递X-Forwarded-Proto值,让我们知道请求是否通过https。如果该值不是https,则触发我们的规则,并使用https返回永久重定向

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...