2009-09-27 13 views
8

के लिए रिवर्स प्रॉक्सी के रूप में मैं आईआईएस 7 और एप्लिकेशन अनुरोध रूटिंग एक्सटेंशन का उपयोग कर रहा हूं ताकि अपाचे पर चल रहे सबवर्जन के लिए रिवर्स प्रॉक्सी के रूप में कार्य किया जा सके।आईआईएस 7 और एआरआर सबवर्सन

प्रॉक्सी ठीक काम करता है और मैं सर्वर का पता लगाने में सक्षम हूं, और यहां तक ​​कि "चेक आउट" भी कर सकता हूं। हालांकि, मैं उन फ़ाइलों को ब्राउज़ नहीं कर सकता जो सामान्य रूप से ASP.NET द्वारा प्रतिबंधित किए जाएंगे - उदाहरण के लिए, .cs, .csproj, और इसी तरह। फाइल एएसपी.नेट से संबंधित नहीं होगा - जैसे .txt - ठीक है।

मैंने इन फ़ाइलों के लिए फॉरबिडन हैंडलर मानचित्रण को हटाने के लिए वैश्विक web.config को संपादित करने का प्रयास किया, लेकिन ऐसा कोई फर्क नहीं पड़ता। क्या आईआईएस 7 में यूआरएल रीराइटिंग मॉड्यूल को काम करने की अनुमति देने का कोई तरीका है, जबकि सभी फाइल एक्सटेंशन को प्रस्तुत करने की इजाजत है?

उत्तर

13

IIS7 जो एक सुरक्षा अनुभाग है कि फ़ाइल एक्सटेंशन को सीमित करता है एक applicationHost.config फ़ाइल है:

<requestFiltering> 
    <fileExtensions allowUnlisted="true" applyToWebDAV="true"> 
    <add fileExtension=".cs" allowed="false" /> 
    <add fileExtension=".csproj" allowed="false" /> 
    <add fileExtension=".vb" allowed="false" /> 
    <add fileExtension=".vbproj" allowed="false" /> 
    .... 
    </fileExtensions> 

अधिक जानकारी:

http://learn.iis.net/page.aspx/143/how-to-use-request-filtering/

मुझे अपनी साइट की web.config लिए एक समान अनुभाग जोड़ा था और सभी एक्सटेंशन को हटाने के लिए <clear /> नोड का उपयोग किया। अब मैं .cs, .csproj फ़ाइलों और अन्य की सेवा कर सकता हूं, लेकिन मैं अभी तक .config फ़ाइलों को सेवा नहीं दे सकता।

संपादित करें: छिपी हुई जांच नोड्स को हटाने से web.config फ़ाइलों के लिए भी इसे ठीक किया गया।

<system.webServer> 
    <security> 
    <requestFiltering> 
     <fileExtensions allowUnlisted="true" applyToWebDAV="true"> 
     <clear /> 
     </fileExtensions> 
     <verbs allowUnlisted="true" applyToWebDAV="true" /> 
     <hiddenSegments applyToWebDAV="true"> 
     <clear /> 
     </hiddenSegments> 
    </requestFiltering> 
    </security> 
</system.webServer> 
+0

हाँ, यह मेरे लिए काम किया यहाँ मेरी स्थानीय web.config फ़ाइल है। +1 –

+0

यह उत्तर है। धन्यवाद! – Alexandr

3

मैं अपने web.config इसलिए की तरह लग रही के साथ काम मिल गया:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="ReverseProxyInboundRule1" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{CACHE_URL}" pattern="^(https?)://" /> 
        </conditions> 
        <action type="Rewrite" url="{C:1}://localhost:8080/{R:1}" /> 
       </rule> 
      </rules> 
      <outboundRules> 
       <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"> 
        <match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:8080/(.*)" /> 
        <action type="Rewrite" value="http{R:1}://svn.mysite.com/{R:2}" /> 
       </rule> 
       <preConditions> 
        <preCondition name="ResponseIsHtml1"> 
         <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> 
         <add input="{RESPONSE_CONTENT_ENCODING}" pattern="[^(gzip)]" /> 
        </preCondition> 
       </preConditions> 
      </outboundRules> 
     </rewrite> 
     <security> 
     <requestFiltering> 
      <fileExtensions allowUnlisted="true" applyToWebDAV="true"> 
      <clear /> 
      </fileExtensions> 
      <verbs allowUnlisted="true" applyToWebDAV="true" /> 
      <hiddenSegments applyToWebDAV="true"> 
      <clear /> 
      </hiddenSegments> 
     </requestFiltering> 
     </security> 
    </system.webServer> 
</configuration>