Модуль 2 перезаписи URL-адресов Server 2012 всегда имеет 404

перезапись URL-адреса отлично работала в Windows Server 2008, но я ' m получение 404 ошибки при использовании той же конфигурации на Server 2012

    <rewrite>
        <outboundRules>
            <rule name="persist example.org" preCondition="ResponseIsHtml1" enabled="false">
                <match filterByTags="A, Form, Img" pattern="^http(s)?://10.10.10.3:8000/(.*)" />
                <action type="Rewrite" value="http{R:1}://example.org/{R:2}" />
            </rule>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                <match filterByTags="A, Form, Img" pattern="^http(s)?://10.10.10.3:8080/(.*)" />
                <action type="Rewrite" value="http{R:1}://example.org/{R:2}" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
        <rules>
            <rule name="RequestBlockingRule1" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="prefs?.*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                </conditions>
                <action type="AbortRequest" />
            </rule>
            <rule name="block EDITING of example.org/library/sections" enabled="true" stopProcessing="true">
                <match url="^\/*library\/*sections" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{REQUEST_METHOD}" pattern="^DELETE$" />
                    <add input="{HTTP_HOST}" pattern="^example\.org$" />
                </conditions>
                <action type="AbortRequest" />
            </rule>
            <rule name="block browsing API on example.org" enabled="true" stopProcessing="true">
                <match url="^\/*services\/*browse" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="^example\.org$" />
                </conditions>
                <action type="AbortRequest" />
            </rule>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="Rewrite" url="http://10.10.10.3:8080/{R:1}" />
            </rule>
        </rules>
    </rewrite>

На Server 2012 я использую роль сервера IIS 8.5 по умолчанию, я установил модуль перезаписи URL 2 и оставил все остальные настройки по умолчанию. Я попытался вручную воссоздать правила через IIS 8.5 на сервере 2012 года. Я попытался установить для режима управляемого конвейера пула приложений значение «Классический». Я всегда получаю «404 - файл или каталог не найден». при переходе на example.org или его эквивалент по локальному IP. Я собираюсь отказаться и продолжить использовать Server 2008. Есть предложения?

0
задан 10 May 2016 в 06:52
1 ответ

Разберись, Я не осознавал, что обновляется графический интерфейс: c: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config

Как только я добавил следующий фрагмент в этот файл на машине Win2012, он начал работать, как ожидалось.

<system.webServer>
    <proxy enabled="true" />
</system.webServer>

Глупый я, я подумал, что правило перезаписи входящего трафика должно внешний хост будет означать необходимость в обратном прокси, IIS Manager должен, по крайней мере, предупреждать пользователей, когда прокси отключен - я не могу найти этот параметр в графическом интерфейсе.

0
ответ дан 24 November 2019 в 06:35

Теги

Похожие вопросы