我继承了一个较旧的 .NET 4.7 MVC 应用程序,该应用程序托管在 Azure 中并位于反向代理(应用程序网关)后面。当请求从反向代理转发时,重写规则被设置为使用正确的域工作,这是到位的重写规则:
网络配置
<rule name="Set HOST header based on X-Original-Host header">
<match url="(.*)"></match>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_ORIGINAL_HOST}" pattern="^$" negate="true" />
</conditions>
<serverVariables>
<set name="HTTP_HOST" value="{HTTP_X_ORIGINAL_HOST}"></set>
</serverVariables>
</rule>
我了解应用程序网关 (v1) 使用了非标准标头,例如 X-Original-Host(而不是 X-Forwarded-Host),这就是为什么上述规则适用于设置 IIS 服务器变量的原因。
现在,我们已经迁移到 Front Door,它发送标准的 X-Forwarded 标头。现在这意味着上述规则默认情况下不起作用,我已经通过为每个请求手动发送“X-Original-Host”标头(使用路由规则)来采取变通方法。
我想取消所有这些并使用标准的 X-Forwarded-Host 标头来设置 HTTP_HOST 服务器变量。
问题:
- 我是否可以轻松地将 HTTP_X_ORIGINAL_HOST 替换为 HTTP_X_FORWARDED_HOST?
- 我试图找到与上述值相关的文档,但找不到,有人可以指点我正确的方向吗?
- 有人说要
<proxy enabled="true" preserveHostHeader="true" />
在 system.webServer 下使用,但我找不到有关此的官方 Microsoft 文档
基本上,我想知道如何使用 X-Forwarded-Host 标头设置 HTTP_HOST 变量。