2011-08-30 9 views
10

मैं आईआईएस 7.5 में यूआरएल रिवाइट और एप्लिकेशन अनुरोध रूटिंग का उपयोग कर रहा हूं ताकि कुछ ब्लॉगों के लिए एक रिवर्स प्रॉक्सी स्थापित किया जा सके जो मौजूदा में एकीकृत किए जाने की आवश्यकता है वेबसाइटों। अनेक डोमेन IIS में एक वेबसाइट के लिए बाध्य कर रहे हैं, और हर एक एक ब्लॉग है कि elsewhere- thats होस्ट किया गया है मिल जाएगा जहां ARR और URL पुनर्लेखन में आते हैं। समस्या मैं आ रही है कि मेरे आउटबाउंड नियम-सेट में सर्वर चर {HTTP_HOST} खींचती है प्रॉक्सी सर्वर के बजाय सामग्री सर्वर का होस्टनाम। क्या कोई सर्वर वैरिएबल है जिसका उपयोग मैं कर सकता हूं जो मुझे प्रॉक्सी सर्वर का होस्ट हैम देगा? यहाँ स्पष्ट करने के लिए कुछ कम टिप्पणी के साथ एक ब्लॉग के लिए एक नियम-सेट है:यूआरएल के आउटबाउंड नियमों में रिवर्स प्रॉक्सी सर्वर के HTTP_HOST को कैसे प्राप्त करें 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> 

जब तक मैं यह पता लगा मैं बस यह सुनिश्चित करें कि ब्लॉग यूआरएल अद्वितीय यानी, proxyserversite1/blog1 और proxyserversite2/blog2 हैं जा रहा हूँ, लेकिन मैं 'आउटबाउंड नियमों में प्रॉक्सी सर्वर होस्ट को पकड़ने में सक्षम होना पसंद है, इसलिए मैं उन्हें proxyserversite1/ब्लॉग और proxyserversite2/ब्लॉग नाम दे सकता हूं। कोई विचार?

उत्तर

12

भीतर का नियम में जोड़े इस:

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

HTTP_PRX_HOST जोड़े सर्वर चर (कार्रवाई Pane-> देखें सर्वर Variables-> जोड़ें)

अपने बाहर जाने के नियमों में से अनुमति के लिए उपयोग {HTTP_PRX_HOST}

+0

बढ़िया! मैं इसे एक शॉट दूंगा! – joelmdev

संबंधित मुद्दे