2009-09-27 12 views
8

Estoy usando IIS7 y la extensión de enrutamiento de solicitud de solicitud para actuar como un proxy inverso para Subversion que se ejecuta en Apache.IIS7 y ARR como proxy inverso para Subversion

El proxy funciona bien y puedo explorar el servidor e incluso realizar un "check out". Sin embargo, no puedo buscar archivos que normalmente estarían prohibidos por ASP.NET, por ejemplo, .cs, .csproj, etc. Los archivos ASP.NET no estarían preocupados, como .txt, están bien.

Traté de editar el web.config global para eliminar la asignación de controlador Forbidden para estos archivos, pero no pareció marcar la diferencia. ¿Hay alguna manera de permitir que el módulo de reescritura de URL en IIS7 funcione, permitiendo al mismo tiempo que se procesen todas las extensiones de archivo?

Respuesta

13

IIS7 tiene un archivo applicationHost.config que tiene una sección de seguridad que limita las extensiones de archivo:

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

Más información:

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

he añadido una sección similar a web.config de mi sitio y utilizó un nodo <clear /> para eliminar todas las extensiones. Ahora puedo servir archivos .cs, .csproj y otros, pero aún no puedo publicar archivos .config.

Editar: Al eliminar los nodos de sección oculta se corrigió esto también para los archivos web.config. Aquí está mi archivo local 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í, esto funcionó para mí. +1 –

+0

Esta es la respuesta. ¡Gracias! – Alexandr

3

lo tengo trabajando con mi web.config en busca de esta manera:

<?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> 
Cuestiones relacionadas