Общие сведения о маршрутизации на основе URL-путей
Маршрутизация на основе URL-адресов позволяет направлять трафик в серверные пулы на основе URL-адресов запроса.
Один из сценариев — это маршрутизация запросов содержимого различных типов в различные пулы тыловых серверов.
В следующем примере Шлюз приложений обслуживает трафик для contoso.com из трех внутренних пулов серверов, например VideoServerPool, ImageServerPool и DefaultServerPool.
Запросы для http://contoso.com/video/* направляются в VideoServerPool, а запросы для http://contoso.com/images/* — в ImageServerPool. Если ни один из шаблонов пути не подходит, выбирается пул DefaultServerPool.
Примечание.
При маршрутизации запроса полный путь URL-адреса отправляется в внутренний пул. Если запрошенные ресурсы находятся по другому пути (например, если запрос на * требует, чтобы http://contoso.com/video/видео обслуживалось из корневого каталога сайта за VideoServerPool), вам также потребуется настроить правило переопределения URL-адресов или переопределить внутренний путь в параметрах серверной части.
Внимание
В ценовой категории версий 1 и 2 правила обрабатываются в том порядке, в котором они указаны на портале. Рекомендуется при создании правил пути иметь наименее конкретный путь (те, которые с подстановочными знаками) в конце. Если подстановочные знаки находятся в верхней части, то они имеют приоритет, даже если в последующих правилах пути имеется более конкретное совпадение.
Если базовый прослушиватель стоит первым в списке и совпадает с входящим запросом, он будет обрабатываться прослушивателем. Однако перед настройкой базового прослушивателя настоятельно рекомендуется настроить прослушиватели с несколькими сайтами. Это гарантирует, что трафик будет перенаправляться на правильный внутренний сервер.
Элемент конфигурации UrlPathMap
Элемент URLPathMap используется для указания шаблонов пути для сопоставлений серверного пула серверов. Ниже приведен пример кода, который является фрагментом элемента urlPathMap из файла шаблона.
"urlPathMaps": [{
"name": "{urlpathMapName}",
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/urlPathMaps/{urlpathMapName}",
"properties": {
"defaultBackendAddressPool": {
"id": "/subscriptions/ {subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendAddressPools/{poolName1}"
},
"defaultBackendHttpSettings": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendHttpSettingsCollection/{settingname1}"
},
"pathRules": [{
"name": "{pathRuleName}",
"properties": {
"paths": [
"{pathPattern}"
],
"backendAddressPool": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendAddressPools/{poolName2}"
},
"backendHttpsettings": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendHttpSettingsCollection/{settingName2}"
}
}
}]
}
}]
PathPattern
PathPattern — это список шаблонов пути для сопоставления. Каждый путь должен начинаться с / и может использовать * в качестве подстановочного знака. Строка, передаваемая в путь, не включает текст после первого ?
или #
, и эти символы не допускаются здесь. В остальных случаях все допустимые символы в URL-адресе допускаются и в PathPattern.
В правилах для путей не учитывается регистр.
Шаблон пути | Поддерживается? |
---|---|
/images/* |
yes |
/images* |
yes |
/images/*.jpg |
no |
/*.jpg |
no |
/Repos/*/Comments/* |
no |
/CurrentUser/Comments/* |
yes |
Правила пути обрабатываются по порядку на основе того, как они перечислены на портале. Наименее конкретный путь (с подстановочными знаками) должен находиться в конце списка, чтобы он был обработан последним. Если правила подстановочных знаков присутствуют в верхней части списка, они принимают приоритет и сначала обрабатываются. См. следующие примеры сценариев.
Примеры
Обработка правил на основе пути при использовании подстановочного знака (*):
Пример 1:
/master-dev* to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/* to microsoft.com
Так как путь /master-dev*
подстановочного знака представлен выше более детализированных путей, все клиентские запросы, содержащиеся /master-dev
в них, направляются в contoso.com, включая конкретные /master-dev/api-core/
. Чтобы убедиться, что клиентские запросы направляются в соответствующие пути, важно иметь детализированные пути выше подстановочных знаков.
Пример 2:
/ (default) to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/api to bing.com
/master-dev/* to microsoft.com
Все клиентские запросы с шаблоном /master-dev/*
пути обрабатываются в порядке, как указано. Если в правилах пути нет совпадений, запрос направляется в целевой объект по умолчанию.
Дополнительные сведения см. в шаблоне Resource Manager с помощью маршрутизации на основе URL-адресов.
Правило PathBasedRouting
Правило RequestRoutingRule типа PathBasedRouting используется для привязки прослушивателя к urlPathMap. Все получаемые запросы для этого прослушивателя распределяются согласно политике, указанной в urlPathMap. Фрагмент правила PathBasedRouting:
"requestRoutingRules": [
{
"name": "{ruleName}",
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/requestRoutingRules/{ruleName}",
"properties": {
"ruleType": "PathBasedRouting",
"httpListener": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/httpListeners/<listenerName>"
},
"urlPathMap": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/urlPathMaps/{urlpathMapName}"
}
}
}
]
Следующие шаги
Ознакомившись с маршрутизацией на основе URL-адресов, создайте шлюз приложений с соответствующими правилами маршрутизации, как указано в статье о создании шлюза приложений с помощью маршрутизации на основе URL-адресов .