Я использую сервер обратного прокси (RP) (Win 2012 R2) в моей DMZ. Затем он подключается к моему серверу локальной сети под управлением Win 2008 R2. У меня также есть тот же RP-сервер перед другим Win 2012 R2 LAN box.

Мы внедряем наше первое приложение ASP.NET Core в локальной сети за RP. Он отлично работает, это коробка LAN Win 2012 R2. Однако если мы переместим приложение на нашу рабочую машину Win 2008 R2, оно будет работать, за исключением случаев, когда есть контроллер, который возвращает представление HTML (вместо XML или JSON). Опять-таки, точно такой же код работает на блоке Win 2012 R2 LAN, но не на блоке Win 2008 R2 LAN.

Вот RP web.config (одинаково для обоих серверов локальной сети, за исключением IP-адресов и домена)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://10.0.0.254/{R:1}" />
            </rule>
        </rules>
        <outboundRules>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                <match filterByTags="A, Form, Img" pattern="^http(s)?://10.0.0.254/(.*)" />
                <action type="Rewrite" value="http{R:1}://our-public-domain.com/{R:2}" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>
</system.webServer>

На коробке Win 2008 R2 LAN, вот web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath=".\MyApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
</configuration>
<!--ProjectGuid: 5x8x39x8-580x-4xx2-955x-76x4x4685415-->

Как я уже говорил, конфигурация на том же RP-сервере при подключении к блокам Win 2012 R2 или Win 2008 R2. Кроме того, у нас в Windows 2008 R2 есть другие сайты, которые НЕ используют ASP.NET Core, и они работают просто отлично, но ни у одного из них нет представления, поскольку они просто возвращают XML, JSON и текст.

Любое понимание?

1
206mph 1 Апр 2017 в 01:25

2 ответа

Лучший ответ

Я вижу, у вас есть ответ переписать в правиле. Это может вызвать ошибку 500 из модуля URLRewrite на сервере RP, если ответ сжат. Вы можете увидеть подробности, проверив дополнительный код статуса. Для кодировки Gzip это обычно 500,52. Вы можете увидеть это в журнале IIS сервера RP

Подробнее о субстатусе код состояния iis

Если ошибка 500,52, проверьте это

1
Rohith 1 Апр 2017 в 03:55

Проверьте в панели управления, что вы установили IIS Express более одного. Если у вас их больше одного, 1. сохраните IIS Express по умолчанию. 2.Удалите другое. 3. Ремонт IIS Экспресс

0
atik sarker 23 Авг 2018 в 18:42