2

У меня есть сайт, где любой трафик, поступающий на порт 80, должен быть перенаправлен на порт 443 (https). Согласно этой статье, это достаточно просто, и это работает. Однако моя проблема в том, что это среда с балансировкой нагрузки. Я хочу открыть нестандартный порт за моим брандмауэром, чтобы, когда мой сервер отключен от балансировщика нагрузки, я мог нажать свой код и проверить его, используя http://myip:XXXX через http на нестандартном порту, не вызывая https ,

Правило, используемое в статье это

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

Как я могу настроить это так, чтобы он только перенаправлял на порт 80 (или не перенаправляет на мой тестовый порт)?

2 ответа2

1

Я просто отключил это же правило для определенного порта, используя отрицательное условие для переменной SERVER_PORT (docs). Для порта XXXX:

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      <add input="{SERVER_PORT}" pattern="XXXX" negate="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
0

Файл web.config ориентирован на сайт (точнее, на каталог, к каталогу, в котором он находится), независимо от того, к какому порту он подключен.

Хитрость (и я никогда не делал этого в отношении портов) состоит в том, чтобы изменить правило соответствия URL-адресов, чтобы соответствовать запросам URL, заканчивающимся на :80 . Мое первоначальное предположение было бы, что изменение его на (.*:80) может просто сработать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .