IIS Rewrite Reverse Proxy получает ошибку HTTP 502 при использовании SSL

Я ищу идеи/предложения по настройке/устранению неполадок в конфигурации, которая позволяет мне отлаживать сценарий следующим образом. Я использую IIS 10, Visual Studio 2017.

У меня есть веб-приложение, которое отправляет сообщение на сторонний сайт. Затем сторонний сайт отправляет ответ моему веб-приложению. IIS имеет обратный прокси-сервер (показан ниже), который направляет сообщение из стороннего приложения в IIS Express, где мое приложение работает в IIS Express (VS 2017).

Все соединения используют SSL. IIS Express использует самозаверяющий сертификат, поставляемый с VS2017.

Вызов приложения, работающего в IIS Express, из стороннего приложения через обратный прокси-сервер работал, пока я не перешел на использование SSL. (Для этого решения требуется SSL).

url="https://10.10.203.132:44349/{R:1}" -> это компьютер, на котором запущено мое приложение в VS2017.

Теперь я получаю субкод ошибки 502 3, и мое приложение никогда не вызывается. Нет другой информации в отслеживании неудачных запросов

Какие-либо предложения?

<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Reverse Proxy" enabled="true" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="https://10.10.203.132:44349/{R:1}" />
            </rule>
        </rules>
        <outboundRules>
            <rule name="Ensure samesite Cookies" preCondition="Missing samesite cookie">
                <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
                <action type="Rewrite" value="{R:0}; SameSite=None" />
            </rule>     
            <preConditions>
                <preCondition name="Missing samesite cookie">
                    <!-- Don't remove the first line here, it does do stuff! -->
                    <add input="{RESPONSE_Set_Cookie}" pattern="." />
                    <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
                </preCondition>
            </preConditions>            
        </outboundRules>
    </rewrite>
</system.webServer>


person haler212    schedule 20.04.2020    source источник
comment
Не могли бы вы поделиться со мной рабочим примером? Я постараюсь воспроизвести вашу проблему. Кажется, что правила перезаписи не сработали. Как насчет ситуации с использованием протокола HTTP. Кроме того, при использовании самоподписанного сертификата запрос с IP-адресом будет заблокирован браузерами. Мы можем проверить это, просто открыв его в браузере.   -  person Abraham Qian    schedule 21.04.2020
comment
До того, как я перешел на SSL, я не получал 502.   -  person haler212    schedule 21.04.2020
comment
Я хотел бы знать сценарий с рабочим примером. Применимо ли действие «Переписать» к этому случаю?   -  person Abraham Qian    schedule 22.04.2020
comment
Поскольку большая часть решения находится за брандмауэром, я не могу привести вам рабочий пример. Да, действие перезаписи применимо к этому случаю.   -  person haler212    schedule 22.04.2020
comment
Я так не думаю, для перенаправления HTTP-запроса на https может быть полезно действие Redirect. Действие Rewrite обычно используется для перезаписи строки пути вместо имени машины. Пожалуйста, попробуйте приведенную ниже конфигурацию.   -  person Abraham Qian    schedule 24.04.2020
comment
у вас есть решение для этого? У меня такая же проблема в настоящее время   -  person misanthrop    schedule 12.05.2020


Ответы (1)


  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Reverse Proxy" enabled="true" stopProcessing="true">
          <match url="(.*)" />
          <action type="Redirect" url="https://10.10.203.132:44349/{R:1}" appendQueryString="true" logRewrittenUrl="false" />
          <conditions logicalGrouping="MatchAll">
                        <add input="{SERVER_PORT_SECURE}" pattern="0" /></conditions>
        </rule>
      </rules>

Вот еще одно решение.
https://www.namecheap.com/support/knowledgebase/article.aspx/9953/38/iis-redirect-http-to-https
Не стесняйтесь, дайте мне знать, если проблема все еще существует.

person Abraham Qian    schedule 24.04.2020
comment
Вы же пишете переписывать не надо. Я не думаю, что мне нужен файл server_port_secure. Теперь я получаю 404, используя:<configuration> <system.webServer> <rewrite> <rules> <rule name="Reverse Proxy" enabled="true" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <action type="Redirect" url="https://10.10.203.132:44349/{R:1}" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer> </configuration> - person haler212; 24.04.2020
comment
если я удалю {R:1}, я не получу 404, но строка запроса пуста. Становимся ближе... - person haler212; 24.04.2020
comment
Условия правила используются исключительно для соответствия HTTP-запросу, чтобы запрос переадресации https работал правильно. в противном случае запрос https не получит ответа, запрос на переадресацию https останется перенаправленным и не может быть выполнен. - person Abraham Qian; 27.04.2020