IIS7 и ARR как обратный прокси для Subversion

Я использую IIS7 и расширение Application Request Routing, чтобы действовать как обратный прокси для Subversion, работающей на Apache.

Прокси-сервер работает нормально, и я могу исследовать сервер и даже выполнить «проверку». Однако я не могу просматривать файлы, которые обычно запрещены ASP.NET, например .cs, .csproj и т. Д. Файлы, о которых ASP.NET не заботится, такие как .txt, подходят.

Я попытался отредактировать глобальный файл web.config, чтобы удалить сопоставление обработчика Forbidden для этих файлов, но это, похоже, не имело значения. Есть ли способ разрешить работу модуля перезаписи URL-адресов в IIS7, разрешив при этом рендеринг всех расширений файлов?


person Paul Stovell    schedule 27.09.2009    source источник


Ответы (3)


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

Изменить: удаление узлов hiddenSection исправило это и для файлов web.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>
person Paul Stovell    schedule 27.09.2009
comment
Это ответ. Спасибо! - person Alexandr; 07.04.2017

У меня он работал с моим 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>
person InActive    schedule 25.11.2012

В дополнение к ответу Пола Стовелла я бы рекомендовал активировать двойное экранирование. Я обнаружил ошибки при извлечении файлов, содержащих символ + в имени файла. Двойное экранирование устраняет эту проблему:

    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="SVNIn" stopProcessing="false">
                        <match url="(.*)" />
                        <action type="Rewrite" url="http://localhost:8082/svn/{R:1}" />
                    </rule>
                </rules>
            </rewrite>
            <security>
                <requestFiltering allowDoubleEscaping="true">
                    <fileExtensions allowUnlisted="true" applyToWebDAV="true">
                        <clear />
                    </fileExtensions>
                    <verbs allowUnlisted="true" applyToWebDAV="true" />
                    <hiddenSegments applyToWebDAV="true">
                        <clear />
                    </hiddenSegments>
                </requestFiltering>
            </security>
        </system.webServer>
    </configuration>
person Macharius    schedule 25.02.2021