Перенаправление IIS — имя хоста на псевдоним только с перенаправлением HTTP

Перенаправление IIS — имя хоста на псевдоним только с перенаправлением HTTP

У меня есть сервер Windows 2016 (FQDN: server1.domain) в домене Active Directory. Я размещаю интрасетевые веб-приложения в IIS.

Недавно я получил псевдоним (FQDN: CoolName.domain) для этого сервера, созданного в DNS. Сертификаты TLS были сгенерированы внутренним центром сертификации. В IIS я привязал порт 443 к именам хостов CoolName.domainи CoolNameсертификату.

Я хочу иметь возможность перенаправлять мои существующие приложения со старого домена (ie. server1.domain/app1) на псевдоним (ie. CoolName.domain/app1) всякий раз, когда люди вводят старый домен. Также принудительно использовать HTTPS, если они используют HTTP.

Я попытался использовать модуль HTTP Redirect на уровне сервера в IIS Manager и заполнил следующее:

  1. Перенаправлять запросы по этому адресу:https://CoolName.домен

  2. Поведение перенаправления: провереноRedirect all requests to exact destination (instead of relative to destination)

  3. Затем нажал «Применить».

Изображение вариантов, которые я использовал:https://i.stack.imgur.com/vgPld.jpg

При посещении следующих ссылок перенаправление не произошло:

http://server1

http://CoolName

http://CoolName.domain

http://server1.domainВ итоге получилось только перенаправление на https://CoolName.domain.

Как только я попробовал перенаправить любой URL, который вышел за пределы домена, например http://CoolName.domain/app1, он не перенаправлялся. Я попробовал снять флажок дляПеренаправлять все запросы по точному адресу назначения (а не относительно него)в №2.

Возможно ли выполнить мое требование, используя только HTTP-перенаправление?

решение1

Я забыл упомянуть в своем первом сообщении, что я получаю ошибки, относящиеся к "Слишком много HTTP-перенаправлений". Оказывается, включение HTTP-перенаправления И перенаправление на ОДИН и тот же веб-сайт (даже с другим псевдонимом) приводит к бесконечному перенаправлению. Видимо, IIS недостаточно умен, чтобы определить, перенаправляет ли он на тот же домен или нет. Вот так. Я в итоге решил свою проблему, следуя инструкциям здесь:https://stackoverflow.com/a/49460688

Подводя итог: вы создаете фиктивный веб-сайт и связываете весь HTTP-трафик порта 80 через этот сайт на IIS, затем вы можете перенаправить на HTTPS, настроенный на вашем оригинальном веб-сайте IIS. Для этого:

  1. Веб-сайт по умолчанию — привяжите весь HTTP-трафик к свободному порту, отличному от 80 (или удалите привязку HTTP). Оставьте привязки HTTPS в покое.

Для веб-сайта по умолчанию измените привязку HTTP на другой порт или удалите ее.

  1. Создайте новый веб-сайт в IIS (RedirectSite): привяжите весь HTTP-трафик к порту 80.

Настройте привязки к порту 80 для фиктивного сайта RedirectSite.

  1. В настройках DummySite нажмите на HTTP Redirect. Установите флажок «Redirect requests to this destination»; в поле URL назначения введите полный домен с HTTPS. Например.https://CoolName.домен. HTTP-код 301. Никакие другие поля не нужно отмечать, так как я хотел перенаправить все относительно домена. Убедитесь, что вы нажали «Применить», чтобы сохранить настройки.

Шаг 3, настройка перенаправления

  1. После применения настроек подождите несколько минут, чтобы изменения вступили в силу, если вы используете аутентификацию Windows. У меня возникли проблемы с ошибками аутентификации (HTTP 40x.x), когда я пытался перенаправить. Очистите кэш в клиентском браузере перед тестированием ссылок.

  2. Тест. В итоге я воспользовался ссылками, как в моем первоначальном посте:

http://сервер1

http://server1.домен

http://CoolName

http://CoolName.домен

Эти ссылки должны перенаправлять наhttps://CoolName.домен.

В качестве примечания для обоих веб-сайтов, если применимо:

  • Убедитесь, что IIS_IUSRS и IUSR имеют разрешения на чтение/выполнение в каталогах веб-сайта. То же самое с [Server_name]\Users

  • Еще раз проверьте, правильно ли настроена аутентификация Windows.

Связанный контент