У меня есть правило обратного прокси, которое перенаправляет все запросы к определенному поддомену на внутренний сервер, и все работает отлично.
<rule name="cloud.domain.com" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(cloud.)domain.com$" />
</conditions>
<action type="Rewrite" url="http://127.0.0.1:8000/{R:0}" appendQueryString="true" />
</rule>
Это работает как для http, так и для https-запросов к cloud.domain.com. Однако я хочу, чтобы все запросы http://cloud.domain.com переслать https://cloud.domain.com который выполняет обратный прокси-сервер для внутреннего сервера. Любые идеи?
Модули Rewrite и ARR принимают существующий запрос и перенаправляют его на другой сервер для выполнения этого запроса.
SSL всегда должен находиться между двумя конечными точками, в данном случае браузером и конечным сервером, вы пытаетесь внедрить SSL на полпути. Если модуль перезаписи переключается на SSL, как браузер узнает об этом? (это не так) Что, если ОС браузера не доверяет сертификату конечного сервера? Это не должно работать.
Что вы должны сделать, это настроить правило перенаправления для всех запросов, отличных от ssl, с http: // на https: //, тогда браузер повторит запрос с SSL, и он должен пройти весь путь.
Вам нужно добавить такое условие:
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />