Вопрос
Как правильно настроить шлюз приложений Azure, чтобы он мог обрабатывать запросы, использующие заголовок узла только с именем узла (т. е. не полным доменным именем), поскольку клиенты полагаются на свой список суффиксов поиска DNS для обработки этого.
Деталь
У нас есть шлюз приложений Azure, настроенный на использование частного IP-адреса, который действует как балансировщик нагрузки для различных внутренних веб-сайтов/веб-приложений.
Поскольку мы обрабатываем несколько сайтов в этом шлюзе приложений, я настроил прослушиватели для нескольких сайтов, которые полагаются на заголовок узла HTTP/1.1 для правильной маршрутизации запросов к соответствующему бэкенду.
Многие из этих сайтов имеют полные доменные имена, которые находятся в суффиксе нашего основного домена; например report.domain.example.com
. Поскольку наш основной домен находится в списке суффиксов поиска нашего клиентского устройства, это означает, что обычно они смогут ввести составление отчетов
и пусть DNS разрешает это report.domain.example.com
, доставив их в нужное место. Однако браузер не отправляет полное доменное имя, разрешенное DNS, а отправляет введенное пользователем имя хоста в значении заголовка хоста. Это означает, что мой слушатель не получит ожидаемое полное имя.
Я могу обойти это; создание прослушивателя, настроенного с именем хоста без суффикса DNS, для захвата запросов, поступающих таким образом; и я даже могу обрабатывать HTTPS, поскольку у нас есть собственный доверенный центр сертификации (т. е. службы сертификации AD), поэтому мы можем выдавать сертификаты, которые включают как полное доменное имя, так и форму короткого имени в их списке SAN.
Однако я обнаружил странность после настройки нескольких сайтов... с настроенными прослушивателями, как показано ниже:
- слушатель
example1.domain.example.com
-> перенаправляет на внешний сайт
- слушатель
пример1
-> перенаправляет на слушателя example1.domain.example.com
- слушатель
пример1-test.domain.example.com
-> сидит над внутренним пулом
Я обнаружил, что запросы, сделанные https://example1-test.domain.example.com
были перенаправлены на внешний сайт, настроенный на прослушивателе example1.domain.example.com
.
Я тестировал с помощью инструментов разработчика Chrome. Сеть
> Отключить кеш
параметр проверен, чтобы убедиться, что на меня не влияют кэшированные 301, дважды проверил конфигурацию шлюза приложений, чтобы убедиться, что я не сопоставил прослушиватель с неправильным правилом маршрутизации запросов или неправильно настроил правила, а также удалил и воссоздал прослушиватели и правила если что-то испортилось; но без радости.
Когда я изменил имя хоста пример1
слушатель XXXпример1
я нашел это пример1-test.domain.example.com
начал работать как положено.
Я не нашел никакой документации по этой настройке, поэтому не знаю, является ли это ошибкой, если то, что я пытаюсь, не поддерживается, если слушатель использует не строку, а какую-то форму соответствия шаблону/эквивалент регулярного выражения или если есть какой-то другой официальный способ справиться с этим сценарием вместо метода, который я «обнаружил».