2009-09-27 20 views
8

Sto utilizzando IIS7 e l'estensione di instradamento richiesta applicazione per agire da proxy inverso a Subversion in esecuzione su Apache.IIS7 e ARR come proxy inverso per Subversion

Il proxy funziona correttamente e sono in grado di esplorare il server e persino eseguire un "check out". Tuttavia, non riesco a cercare file che normalmente sarebbero vietati da ASP.NET - ad esempio, .cs, .csproj e così via. I file ASP.NET non sono interessati - come .txt - vanno bene.

Ho provato a modificare il web.config globale per rimuovere la mappatura del gestore Proibidden per questi file, ma non sembrava fare la differenza. Esiste un modo per consentire il corretto funzionamento del modulo di riscrittura degli URL in IIS7, pur consentendo la visualizzazione di tutte le estensioni dei file?

risposta

13

IIS7 ha un file applicationHost.config che ha una sezione di sicurezza che limita le estensioni dei file:

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

Maggiori informazioni:

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

ho aggiunto una sezione simile al web.config del mio sito e utilizzato un nodo <clear /> per rimuovere tutte le estensioni. Ora posso servire file .cs, .csproj e altri, ma non posso ancora servire file .config.

Modifica: La rimozione dei nodi hiddenSection ha corretto anche questo per i file web.config. Qui è il mio locale file 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

Sì, questo ha funzionato per me. +1 –

+0

Questa è la risposta. Grazie! – Alexandr

3

ho preso a lavorare con il mio web.config cercando in questo modo:

<?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> 
Problemi correlati