需要禁用并启用 IIS 的 URL 重写规则

需要禁用并启用 IIS 的 URL 重写规则

我正在测试环境中自动创建 URL 重写。我在 IIS 8.5 中使用 Powershell 对其进行配置

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site/App/MyApp/v1' -filter "system.webServer/rewrite/allowedServerVariables" -name "." -value @{name='HTTP_X_FORWARDED_FOR'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site/App/MyApp/v1' -filter "system.webServer/rewrite/rules" -name "." -value @{name='Add X-Forwarded-For Header';patternSyntax='Wildcard'}
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site/App/MyApp/v1' -filter "system.webServer/rewrite/rules/rule[@name='Add X-Forwarded-For Header']/match" -name "url" -value "*"
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site/App/MyApp/v1' -filter "system.webServer/rewrite/rules/rule[@name='Add X-Forwarded-For Header']/serverVariables" -name "." -value @{name='HTTP_X_FORWARDED_FOR';value='{REMOTE_ADDR}';replace='False'}

这会创建规则,但是在尝试发出请求时 IIS 应用程序会损坏。

它抛出 500.52 错误。

在此处输入图片描述

但是,如果在 UI 中禁用并启用该规则,则一切正常。发生了什么?

答案1

您的 PowerShell 代码最后一行有拼写错误,HTTP_X_ORWARDED_FOR应该是HTTP_X_FORWARDED_FOR

在 IIS 10 上,这会导致错误:

HTTP 错误 500.50 - 不允许设置服务器变量“HTTP_X_ORWARDED_FOR”。将服务器变量名称添加到允许的服务器变量列表中。

使用 PowerShell 更新全局变量applicationhost.config时,使用 GUI 时,更改会写入 web.config 文件中。我不知道为什么这能解决您的问题。我仍然收到与以前相同的错误。

修复拼写错误它就应该可以正常工作了。

相关内容