Iis 未设置服务器变量
我有一个使用NetScaler负载平衡器的负载平衡Web服务器环境,该负载平衡器配置为添加头HTTP_X_FORWARDED_PROTO。这是http/https,具体取决于请求。我知道这个标题是正确的 我在IIS 8.5中创建了一个重写规则来设置服务器端口和HTTPS服务器变量:Iis 未设置服务器变量,iis,rewrite,load-balancing,Iis,Rewrite,Load Balancing,我有一个使用NetScaler负载平衡器的负载平衡Web服务器环境,该负载平衡器配置为添加头HTTP_X_FORWARDED_PROTO。这是http/https,具体取决于请求。我知道这个标题是正确的 我在IIS 8.5中创建了一个重写规则来设置服务器端口和HTTPS服务器变量: <rewrite> <allowedServerVariables> <add name="SERVER_PORT" /&
<rewrite>
<allowedServerVariables>
<add name="SERVER_PORT" />
<add name="HTTPS" />
</allowedServerVariables>
<globalRules>
<rule name="HTTPs Redirect">
<match url="(.*)" />
<conditions>
<add input="{ALL_HTTP}" matchType="Pattern"
pattern="HTTP_X_FORWARDED_PROTO:https" ignoreCase="true" />
</conditions>
<serverVariables>
<set name="SERVER_PORT" value="443" />
<set name="HTTPS" value="on" />
</serverVariables>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</globalRules>
</rewrite>
但是,标题似乎没有更改?我知道这个规则是有效的,因为我添加了一个重定向到google.com的操作,并且可以看到它是有效的。我有一个页面,显示所有服务器变量,代码如下:
<%
foreach (string var in Request.ServerVariables)
{
Response.Write(var + " " + Request[var] + "<br />");
}
%>
我真的在这件事上撞到了墙上,我在网上搜索了又搜索,不明白为什么它不起作用
谢谢
Luke可以通过在IIS用户界面中添加规则而不是直接在web.config中添加规则来解决此问题。在IIS中添加允许的服务器变量并在IIS中重新创建规则后,将开始工作。我不知道它在哪里添加了允许的服务器变量,但它们已不在web.config中,并且正在工作。它们进入applicationHost.config,位于C:\Windows\System32\inetsrv\config中。请参阅