我们已经使用Microsoft的Web Farm Framework在集群中configuration了多个Web服务器。 我喜欢帮助debugging的一件事是在IIS中创build一个标头,标识处理请求的服务器。 不幸的是,当我尝试这样做时,WFF在所有服务器上将标题设置为相同的值。 有没有解决的办法?
我试图寻找使用skipDirectives,但我找不到任何文档(除了一点点显示如何使用它跳过目录和绑定)。
如果有这方面的文档,请链接到它! 我希望能够阅读更多的信息,以防我需要做其他事情。
布赖恩
如何完成这个任务的一个例子是使用URL Rewrite在主Web服务器节点上创build一个响应头,该头添加一个带有{SERVER_ADDR}服务器variables的新头。 使用服务器variables可以使规则尽可能通用,这样就不需要WFF跳过configuration文件的任何部分。
这种types的响应头的web.config项是:
<outboundRules> <rule name="Add Server Node to Response"> <match serverVariable="RESPONSE_Node" pattern="(.*)" /> <action type="Rewrite" value="{SERVER_ADDR}" /> </rule> </outboundRules>
这个规则将把Web服务器的IP地址放在一个名为Node的响应头中。 这可能会导致一些信息泄露,您可能不会披露。 因此,您还可以使用重写映射将不同的服务器IP映射到唯一标识它们的名称,如“Node1”。
要执行SERVER_ADDR服务器variables到您提供的名称的映射,您可以在web.config中执行以下操作:
<rewrite> <outboundRules> <rule name="Add Server Node to Response"> <match serverVariable="RESPONSE_Node" pattern="(.*)" /> <action type="Rewrite" value="{NodeMappings:{SERVER_ADDR}}" /> </rule> </outboundRules> <rewriteMaps> <rewriteMap name="NodeMappings"> <add key="10.0.0.1" value="Node1" /> <add key="10.0.0.2" value="Node2" /> </rewriteMap> </rewriteMaps> </rewrite>
请记住,每次节点IP更改或节点添加到服务器场时,都需要更新本节。