2009-09-27 3 views
8

Ich verwende IIS7 und die Application Request Routing-Erweiterung, um als Reverse-Proxy für Subversion unter Apache zu funktionieren.IIS7 und ARR als Reverse-Proxy für Subversion

Der Proxy funktioniert gut und ich bin in der Lage, den Server zu erkunden und sogar einen "Check-out" durchzuführen. Ich kann jedoch nicht zu Dateien navigieren, die normalerweise von ASP.NET verboten werden, z. B. .cs, .csproj und so weiter. Dateien, die ASP.NET nicht interessieren würde - wie .txt - sind in Ordnung.

Ich habe versucht, die globale web.config zu bearbeiten, um die Forbidden-Handler-Zuordnung für diese Dateien zu entfernen, aber es schien keinen Unterschied zu machen. Gibt es eine Möglichkeit, das URL-Rewriting-Modul in IIS7 zu ermöglichen, während alle Dateierweiterungen gerendert werden können?

Antwort

13

IIS7 hat eine applicationHost.config-Datei, die einen Sicherheits Abschnitt hat, die Dateierweiterungen begrenzt:

<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> 

Weitere Informationen:

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

Ich habe einen ähnlichen Abschnitt web.config meine Website und Verwenden Sie einen <clear /> Knoten, um alle Erweiterungen zu entfernen. Jetzt kann ich .cs, .csproj-Dateien und andere bereitstellen, aber ich kann .config-Dateien noch nicht bereitstellen.

Bearbeiten: Das Entfernen der HiddenSection-Knoten korrigiert dies auch für web.config-Dateien. Hier ist meine lokale Datei 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

Yep, das ist für mich gearbeitet. +1 –

+0

Dies ist die Antwort. Vielen Dank! – Alexandr

3

Ich habe es funktioniert mit meinem web.config sah aus wie so:

<?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> 
Verwandte Themen