我正在测试环境中自动创建 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 文件中。我不知道为什么这能解决您的问题。我仍然收到与以前相同的错误。
修复拼写错误它就应该可以正常工作了。