2009-09-27 13 views
8

J'utilise IIS7 et l'extension Application Request Routing pour agir en tant que proxy inverse de Subversion s'exécutant sur Apache.IIS7 et ARR comme proxy inverse pour Subversion

Le proxy fonctionne très bien et je suis capable d'explorer le serveur, et même d'effectuer un "check out". Cependant, je ne peux pas parcourir les fichiers qui seraient normalement interdits par ASP.NET - par exemple, .cs, .csproj, et ainsi de suite. Les fichiers ASP.NET ne seraient pas concernés - comme .txt - sont bien.

J'ai essayé de modifier le fichier web.config global pour supprimer le mappage de gestionnaire interdit pour ces fichiers, mais cela ne semblait pas faire de différence. Est-il possible de permettre au module de réécriture d'URL dans IIS7 de fonctionner, tout en autorisant le rendu de toutes les extensions de fichier?

Répondre

13

IIS7 a un fichier applicationHost.config qui a une section de sécurité qui limite les extensions de fichier:

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

Plus d'informations:

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

J'ai ajouté une section similaire à web.config de mon site et utilisé un nœud <clear /> pour supprimer toutes les extensions. Maintenant, je peux servir des fichiers .cs, .csproj et d'autres, mais je ne peux pas encore servir les fichiers .config.

Modifier: La suppression des nœuds hiddenSection a également corrigé cela pour les fichiers web.config. Voici mon fichier web.config local:

<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

Eh oui, cela a fonctionné pour moi. +1 –

+0

Voici la réponse. Je vous remercie! – Alexandr

3

Je l'ai travailler avec mon web.config ressembler à ceci:

<?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> 
Questions connexes