如何通过PowerShell获取、添加、修改IIS网站的允许服务器变量?
通过PowerShell为IIS站点添加URL Rewrite允许的服务器变量
前提条件
- 已安装IIS URL Rewrite模块
- 已安装IIS管理PowerShell模块(Windows Server默认自带,缺失可通过服务器功能安装)
操作步骤
- 首先导入IIS管理模块
Import-Module IISAdministration # 兼容旧版系统可替换为 Import-Module WebAdministration
- 定义要操作的站点名称与需要添加的服务器变量列表
# 替换为你的实际站点名 $siteName = "Default Web Site" # 可根据反向代理需求自定义变量列表 $allowedServerVars = @( "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_PROTO", "HTTP_X_ORIGINAL_HOST", "HTTP_X_REAL_IP" )
- 执行添加操作(自带重复校验,不会报错)
foreach ($var in $allowedServerVars) { $existCheck = Get-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/$siteName" -Filter "system.webServer/rewrite/allowedServerVariables/add[@name='$var']" -Name "." if (-not $existCheck) { Add-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/$siteName" -Filter "system.webServer/rewrite/allowedServerVariables" -Name "." -Value @{name = $var} Write-Host "成功添加服务器变量:$var" } else { Write-Host "服务器变量 $var 已存在,跳过" } }
验证配置
执行以下命令可以列出当前站点所有已允许的服务器变量:
Get-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/$siteName" -Filter "system.webServer/rewrite/allowedServerVariables" -Name "." | Select-Object -ExpandProperty Collection | Select-Object name
说明
- 上述配置写入站点级的
applicationHost.config文件,属于IIS全局站点配置,优先级高于站点根目录的web.config,符合URL Rewrite服务器变量的配置要求。 - 如果需要配置所有站点全局生效的允许服务器变量,将命令中
PSPath参数的值改为MACHINE/WEBROOT/APPHOST即可。
内容的提问来源于stack exchange,提问作者Matija Sestak
相关产品推荐
相关产品推荐

