Używam URL Rewrite i Routing żądań aplikacji w IIS 7.5, aby skonfigurować odwrotne proxy dla kilku blogów, które muszą być zintegrowane z istniejącymi strony internetowe. Wiele domen jest związanych z jedną witryną w IIS, a każda z nich otrzyma bloga hostowanego gdzie indziej - czyli ARR i URL Rewrite. Problem polega na tym, że w moim zbiorze reguł wychodzących zmienna serwera {HTTP_HOST} ciągnie nazwa hosta serwera treści zamiast serwera proxy. Czy istnieje zmienna serwerowa, z której mogę korzystać, aby uzyskać adres hosta serwera proxy? Oto zestaw reguł dla jednego bloga z kilkoma krótkimi komentarzami do wyjaśnienia:Jak uzyskać HTTP_HOST odwrotnego serwera proxy w regułach wychodzących URL Rewrite w/ARR
<rewrite>
<rules>
<rule name="Route requests for contentserver blog" stopProcessing="true">
<match url="^blog/(.*)" />
<conditions trackAllCaptures="true">
<add input="{CACHE_URL}" pattern="^(https?)://" />
<add input="{HTTP_HOST}" pattern="(www\.)proxyserver\.com$" /> <!--this works-->
</conditions>
<action type="Rewrite" url="{C:1}://blog.contentserver.com/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="Rewrite Relative URLs" preCondition="ResponseIsHtml" stopProcessing="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" />
<action type="Rewrite" value="/blog/{R:1}" />
<conditions>
<add input="{URL}" pattern="^/blog/" />
<add input="{HTTP_HOST}" pattern="^(www\.)proxyserver\.com$" /> <!--this doesnt work because it's grabbing the content server's host, not the proxy server's host-->
</conditions>
</rule>
<rule name="Rewrite Absolute URLs" preCondition="ResponseIsHtml" stopProcessing="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(https?)://blog\.contentserver\.com(/(.*))?" />
<action type="Rewrite" value="/blog/{R:3}" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)proxyserver\.com$" /> <!--this doesnt work because it's grabbing the content server's host, not the proxy server's host-->
<add input="{URL}" pattern="^/blog/" />
</conditions>
</rule>
<preConditions>
<preCondition name="ResponseIsHtml">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
Dopóki nie wymyślimy Idę, aby zapewnić, że adresy URL blogi są unikalne tj proxyserversite1/blog1 i proxyserversite2/blog2, ale Chciałbym móc chwycić hosta serwera proxy w regułach ruchu wychodzącego, abym mógł nazwać je proxyserversite1/blog i proxyserversite2/blog. Jakieś pomysły?
Świetnie! Dam ci ten strzał! – joelmdev