Поделиться через


Шлюз приложений для многосайтового размещения

Размещение с несколькими сайтами позволяет настроить несколько веб-приложений на одном порту шлюзов приложений с использованием внешних слушателей. Так вы можете настроить более эффективную топологию для развернутых служб, добавляя более 100 веб-сайтов в один шлюз приложений. Каждый веб-сайт может быть направлен в свой собственный пул серверов. Например, три домена (contoso.com, fabrikam.com и adatum.com) указывают на IP-адрес шлюза приложений. Создайте три многосайтовых прослушивателя и настройте каждый из них на использование соответствующего порта и параметра протокола.

Вы также можете определить имена узлов с подстановочными знаками в многосайтовом прослушивателе и до пяти имен узлов на каждый прослушиватель. Дополнительная информация о подстановочных именах узлов в прослушивателе.

Многосайтовый шлюз приложений

Внимание

В ценовой категории версии 1 правила обрабатываются в том порядке, в котором они указаны на портале. Для SKU версии 2 можно указать порядок обработки, используя приоритет правил. Настоятельно рекомендуется сначала настроить многосайтовые прослушиватели, прежде чем приступить к настройке базового прослушивателя. Это гарантирует, что трафик будет перенаправляться на правильный внутренний сервер. Если базовый прослушиватель стоит первым в списке и совпадает с входящим запросом, он будет обрабатываться этим прослушивателем.

Запросы для http://contoso.com маршрутизируются в ContosoServerPool, а запросы для http://fabrikam.com — в FabrikamServerPool.

Точно так же в одном развернутом шлюзе приложений можно разместить несколько поддоменов одного родительского домена. Например, вы можете размещать http://blog.contoso.com и http://app.contoso.com на одном развертывании шлюза приложений.

Порядок оценки правил маршрутизации запросов

При использовании прослушивателей для нескольких сайтов для направления клиентского трафика на нужную серверную часть важно, чтобы правила маршрутизации запросов были в правильном порядке. Например, если у вас есть 2 прослушивателя со связанными именами узлов *.contoso.com и shop.contoso.com, то прослушиватель с именем узла shop.contoso.com должен обрабатываться перед прослушивателем с именем узла *.contoso.com. Если прослушиватель с *.contoso.com обрабатывается первым, то более конкретный прослушиватель с shop.contoso.com не получает трафик клиентов.

Порядок правил можно установить, указав значение поля "Приоритет " правилам маршрутизации запросов, связанным с прослушивателями. Можно указывать целые значения в диапазоне от 1 до 20 000. Числу 1 соответствует самый высокий, а числу 20 000 — самый низкий приоритет. Если входящий клиентский трафик совпадает с несколькими прослушивателями, правило маршрутизации запросов с наивысшим приоритетом используется для обслуживания запроса. Каждое правило маршрутизации запросов должно иметь уникальное значение приоритета.

Поле приоритета влияет только на порядок оценки правила маршрутизации запросов, это не изменит порядок оценки правил на основе путей в PathBasedRouting правиле маршрутизации запросов.

Примечание.

Чтобы использовать приоритет правила, необходимо указать значения поля приоритета правила для всех существующих правил маршрутизации запросов. Когда поле приоритета правила используется, любое созданное правило маршрутизации должно иметь значение поля приоритета правила в рамках его конфигурации.

Внимание

Начиная с API версии 2021-08-01, поле приоритета правила является обязательным полем в правилах маршрутизации запросов. Значения полей приоритета правила для существующих правил маршрутизации запросов, основанные на текущем порядке оценки в рамках первого вызова PUT, автоматически заполняются, если какие-либо обновления конфигурации применяются с помощью API версии 2021-08-01 и выше, портала, Azure PowerShell и Azure CLI. Будущие обновления правил маршрутизации запросов должны иметь поле приоритета правила, предоставленное в рамках конфигурации.

Подстановочные имена узлов в прослушивателе

Шлюз приложений позволяет выполнять маршрутизацию на основе хостов с помощью многосайтового слушателя HTTP(S). Теперь можно использовать подстановочные знаки, например звездочку (*) и вопросительный знак (?), в имени узла и до пяти имен узлов для каждого прослушивателя HTTP(S), работающего с несколькими сайтами. Например, *.contoso.com.

Используя подстановочный знак в имени узла, можно сопоставить несколько имен узлов в одном прослушивателе. Например, *.contoso.com может соответствовать ecom.contoso.com, b2b.contoso.com, а также customer1.b2b.contoso.com и т. д. Используя массив имен узлов, можно настроить несколько имен узлов для прослушивателя, чтобы маршрутизировать запросы к внутреннему пулу. Например, прослушиватель может содержать contoso.com, fabrikam.com, который принимает запросы для обоих имен узлов.

Прослушиватель с подстановочными знаками

Примечание.

Эта функция доступна только для SKU Standard_v2 и WAF_v2 Шлюза приложений.

В Azure PowerShell необходимо использовать параметр -HostNames вместо -HostName. При использовании HostNames можно указать до 5 имен узлов в виде значений, разделенных запятыми, и использовать подстановочные знаки. Например, -HostNames "*.contoso.com","*.fabrikam.com".

В Azure CLI необходимо использовать параметр --host-names вместо --host-name. При использовании host-names можно указать до 5 имен узлов в виде значений, разделенных запятыми, и использовать подстановочные знаки. Например, --host-names "*.contoso.com,*.fabrikam.com".

В портале Azure в разделе с прослушивателем для нескольких сайтов необходимо выбрать тип размещения Multiple/Wildcard, чтобы указать до пяти имен хостов с разрешенными подстановочными знаками.

Интерфейс прослушивателя с масками

Разрешенные символы в поле имен узлов

  • (A-Z,a-z,0-9) — алфавитно-цифровые символы;
  • - — дефис или минус;
  • . — точка в качестве разделителя;
  • * — может соответствовать нескольким символам в допустимом диапазоне;
  • ? — может соответствовать одному символу в допустимом диапазоне.

Условия использования подстановочных знаков и нескольких имен хостов в прослушивателе

  • В прослушивателе можно указать только до 5 имен узлов.
  • Звездочку * можно упомянуть только один раз в компоненте стиля доменного имени или имени узла. Например, component1*.component2*.component3. (*.contoso-*.com) является допустимым;
  • Имя узла допускается содержать не более двух звездочек *. Например, *.contoso.* является допустимым, а *.contoso.*.*.com — нет.
  • Имя узла может содержать только до 4 подстановочных знаков. Например, ????.contoso.com, w??.contoso*.edu.* допустимы, а ????.contoso.* — нет.
  • Использование звездочки * и вопросительного знака ? вместе в компоненте имени узла (*?, или ?*, или **) недопустимо. Например, *?.contoso.com и **.contoso.com являются недопустимыми.
  • Запись *.contoso.com не соответствует contoso.com, так как *.contoso.com указывает на наличие точки перед contoso.

Рекомендации и ограничения, касающиеся использования подстановочных знаков или нескольких имен узлов в прослушивателе

  • Для завершения сеансов SSL и использования сквозного режима SSL необходимо настроить протокол как HTTPS и отправить сертификат, который будет использоваться в конфигурации прослушивателя. Если это прослушиватель с несколькими сайтами, вы также можете ввести имя хоста, как правило, это CN SSL-сертификата. При указании нескольких имен хостов в прослушивателе или использовании подстановочных знаков необходимо учитывать следующее:
    • Если это подстановочное имя узла, например, *.contoso.com, необходимо загрузить подстановочный сертификат с CN, например, *.contoso.com.
    • Если в одном прослушивателе указывается несколько имен узлов, необходимо загрузить SAN-сертификат (Subject Alternative Names), в котором общее имя (CN) совпадает с указанными именами узлов.
  • Нельзя использовать регулярное выражение для указания имени хоста. Для формирования шаблона имени узла можно использовать только подстановочные знаки, такие как звездочка (*) и вопросительный знак (?).
  • Для проверки работоспособности серверной части невозможно связать несколько пользовательских проб для параметров HTTP. Вместо этого можно проверить один из веб-сайтов в серверной части или использовать адрес 127.0.0.1 для проверки localhost внутреннего сервера. Однако при использовании подстановочных знаков или нескольких имен узлов в прослушивателе запросы для всех указанных шаблонов домена направляются в пул серверов бэкэнда в зависимости от типа правила (базовый или на основе пути).
  • Свойство hostname принимает одну строку в качестве входных данных, где можно упомянуть только одно доменное имя, не являющееся подстановочным знаком. Свойство hostnames принимает массив строк в качестве входных данных, где можно упомянуть до 5 доменных имен подстановочных знаков. Оба этих свойства не могут использоваться одновременно.

Пошаговое руководство по настройке имен узлов с подстановочными знаками в многосайтовых прослушивателях см. в статье Создание шлюза приложений для размещения нескольких веб-сайтов с помощью Azure PowerShell или Использование Azure CLI.

Прослушиватель с несколькими сайтами для прослушивателей протоколов TLS и TCP

Функция с несколькими сайтами также доступна для прокси-сервера Уровня 4, но только для прослушивателей TLS. Трафик для каждого приложения можно направить в внутренний пул, указав доменные имена в прослушивателе TLS. Для функционирования функциональности мультисайта в прослушивателях TLS в Шлюзе приложений используется значение SNI (Указание имени сервера), так как клиенты в основном используют расширение SNI для извлечения корректного TLS-сертификата. Многосайтовый прослушиватель TLS выберет это значение SNI из данных рукопожатия TLS для входящего подключения и перенаправит это подключение к соответствующему бэкэнд-пулу. Tcp-подключение по сути не имеет понятия имени узла или доменного имени; следовательно, это недоступно для прослушивателей TCP.

Заголовки хостов и указание имени сервера (SNI)

Существует три распространенных механизма включения размещения нескольких сайтов в одной инфраструктуре.

  1. Размещение нескольких веб-приложений с уникальным IP-адресом у каждого из них.
  2. Использование имени узла для размещения нескольких веб-приложений на одном IP-адресе.
  3. Использование разных портов для размещения нескольких веб-приложений на одном IP-адресе.

В настоящее время шлюз приложений поддерживает один общедоступный IP-адрес, на котором он прослушивает трафик. Поэтому размещение нескольких приложений, каждое из которых имеет собственный IP-адрес, сейчас не поддерживается.

Шлюз приложений поддерживает несколько приложений, прослушивающих разные порты, но в этом сценарии приложения должны принимать трафик на нестандартные порты.

Шлюз приложений использует заголовки узлов HTTP 1.1 для размещения нескольких веб-сайтов на одном общедоступном IP-адресе и порте. Сайты, размещенные в шлюзе приложений, могут также поддерживать разгрузку TLS с использованием расширения TLS для указания имени сервера (SNI). В рамках этого сценария это значит, что браузер клиента и внутренняя веб-ферма должны поддерживать HTTP/1.1 и расширение TLS, как определено в стандарте RFC 6066.

Следующие шаги

Узнайте, как настроить хостинг с несколькими сайтами в Application Gateway

Ознакомьтесь с шаблоном Resource Manager для размещения нескольких сайтов для полного развертывания на основе шаблонов.