2011-08-30 15 views
10

Estoy usando Reescritura de URL y Enrutamiento de solicitud de aplicación en IIS 7.5 para configurar un proxy inverso para un par de blogs que deben integrarse en los existentes sitios web. Múltiples dominios están vinculados a un sitio web en IIS, y cada uno recibirá un blog alojado en otro lugar, donde ARR y URL Rewrite entran. El problema que tengo es que en mi conjunto de reglas de salida la variable de servidor {HTTP_HOST} extrae el nombre de host del servidor de contenido en lugar del servidor proxy. ¿Hay alguna variable de servidor que pueda usar que me proporcione el host hame del servidor proxy? He aquí un conjunto de reglas para un blog con algunos breves comentarios para aclarar:Cómo obtener HTTP_HOST del servidor proxy inverso en las reglas de salida de Reescritura de URL 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> 

Hasta que resolver esto sólo voy a asegurar que las direcciones URL del blog son únicos, es decir, proxyserversite1/blog1 y proxyserversite2/blog2, pero me gustaría poder tomar el host del servidor proxy en las reglas de salida para poder nombrarlos proxyserversite1/blog y proxyserversite2/blog. ¿Algunas ideas?

Respuesta

12

Añadir a la regla de entrada esto:

<serverVariables> 
    <set name="HTTP_PRX_HOST" value="{HTTP_HOST}" /> 
</serverVariables> 

Añadir a HTTP_PRX_HOST permitido variables de servidor (Acción Pane-> Ver servidor variables-> Añadir)

Que en sus reglas de salida utilice {} HTTP_PRX_HOST

+0

¡Genial! ¡Le voy a dar una oportunidad! – joelmdev

Cuestiones relacionadas