【发布时间】:2018-07-11 22:20:32
【问题描述】:
我有一个长时间运行的 ASP.NET Web 应用程序。
我已经将它连接到单服务器配置 (IIS) 中的 IBM Cloud Load Balancer 几个星期,并且能够很好地连接到应用程序。
当我将第二个 (IIS) 服务器添加到负载平衡器配置时,我收到站点的“重定向过多错误”。
我对该问题的研究表明负载均衡器需要传递一个标头 X-Forwarded-Proto,我需要在 web.config 中添加一个重写规则。
<system.webServer>
<rewrite>
<rules>
<rule name="HTTPS rewrite behind ELB rule" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{SERVER_NAME}{URL}" />
</rule>
</rules>
</rewrite>
</system.webServer>
我已经联系了 IBM 支持 - 他们一如既往地无济于事。他们只是建议他们的 IBM Cloud Load Balancer 不支持 X-Forwarded-Proto 标头,我需要每月在 Netscaler 上花费超过 1K。
问题 1. IBM 的回复对我来说听起来不太对劲,有没有人知道足以发表评论?
问题 2. ASP.NET 中是否有一种编程方式来解决这个问题,即在前面有一个负载平衡器,带有 SSL 卸载并且没有 X-Forwarded-Proto 标头?
提前致谢
【问题讨论】: