我有一个负载平衡器监听端口80和443,但由于安全策略,负载平衡器和Web服务器之间的通信必须加密。我试图生成从http到https的重定向,但是通常的方法不起作用,可能是因为iis无法区分http和https上的原始请求之间的区别。这是因为当请求到达web服务器时,它已经被加密并从端口443下来。
现在,我正在使用带mods的rewrite模块到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报头或cgi变量,该变量指示安全与非安全。
关于http - HTTP到HTTPS重定向到端口443上的Load Balancer之后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9590975/