Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis 未设置服务器变量_Iis_Rewrite_Load Balancing - Fatal编程技术网

Iis 未设置服务器变量

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" /&

我有一个使用NetScaler负载平衡器的负载平衡Web服务器环境,该负载平衡器配置为添加头HTTP_X_FORWARDED_PROTO。这是http/https,具体取决于请求。我知道这个标题是正确的

我在IIS 8.5中创建了一个重写规则来设置服务器端口和HTTPS服务器变量:

<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中。请参阅