我有一个网站,任何来自端口 80 的流量都需要重定向到端口 443 (https)。根据本文,这很简单,而且有效。但我的问题是,这是一个负载平衡环境。我想在防火墙后面打开一个非标准端口,这样当我的服务器脱离负载平衡器时,我就可以推送我的代码并使用http://我的ip:XXXX通过非标准端口上的 http,无需强制使用 https。
本文使用的规则是这样的
<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>
我该如何调整它以便它只重定向到端口 80(或者不重定向到我的测试端口)?
答案1
我刚刚使用 SERVER_PORT 变量上的否定条件关闭了特定端口的相同规则(文档). 对于端口 XXXX:
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{SERVER_PORT}" pattern="XXXX" negate="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
答案2
无论您在哪个端口上访问它,web.config 文件都是以站点为中心的(或者更确切地说,以目录为中心,以它所在的目录为中心)。
诀窍(我从未在端口方面这样做过)是将 URL 匹配规则更改为匹配以 结尾的 URL 请求:80
。我最初的猜测是将其更改为(.*:80)
可能会有效。