Routing auf URL-Pfadbasis – Übersicht
Mit dem Routing auf URL-Pfadbasis kann Datenverkehr basierend auf URL-Pfaden von Anforderungen an Back-End-Serverpools weitergeleitet werden.
Ein mögliches Szenario ist die Weiterleitung von Anforderungen für unterschiedliche Inhaltstypen an verschiedene Back-End-Serverpools.
Im folgenden Beispiel verarbeitet Application Gateway Datenverkehr für „contoso.com“ aus drei Back-End-Serverpools: VideoServerPool, ImageServerPool und DefaultServerPool.
Anforderungen für http://contoso.com/video/* werden an „VideoServerPool“ und Anforderungen für http://contoso.com/images/* an „ImageServerPool“ weitergeleitet. DefaultServerPool wird ausgewählt, wenn keines der Pfadmuster zutrifft.
Hinweis
Wenn die Anforderung weitergeleitet wird, wird der vollständige URL-Pfad an den Back-End-Pool gesendet. Wenn sich die angeforderten Ressourcen auf einem anderen Pfad befinden (z. B. wenn eine Anforderung an http://contoso.com/video/* erfordert, dass Videos vom Stamm der Website hinter dem VideoServerPool bereitgestellt werden), müssen Sie auch eine URL Rewrite Rulekonfigurieren oder in Ihren Back-End-Einstellungen den Back-End-Pfad außer Kraft setzen.
Wichtig
Regeln werden sowohl bei der v1- als auch v2-SKU in der Reihenfolge verarbeitet, in der sie im Portal aufgeführt sind. Beim Erstellen von Pfadregeln sollten die am wenigsten spezifische Pfade (diejenigen mit Platzhaltern) am besten am Ende platziert werden. Wenn sich Platzhalter oben befinden, haben sie auch dann Priorität, wenn nachfolgende Pfadregeln eine spezifischere Übereinstimmung enthalten.
Wenn ein einfacher Listener zuerst aufgeführt wird und sich dafür eine Übereinstimmung mit einer eingehenden Anforderung ergibt, wird die Verarbeitung von diesem Listener durchgeführt. Es wird jedoch dringend empfohlen, vor dem Konfigurieren eines einfachen Listeners zunächst Listener für mehrere Standorte zu konfigurieren. So wird sichergestellt, dass der Datenverkehr an das richtige Back-End geleitet wird.
urlPathMap-Konfigurationselement
Mit dem urlPathMap-Element werden Pfadmuster für Zuordnungen zu Back-End-Serverpools angegeben. Das folgende Codebeispiel ist der Codeausschnitt des urlPathMap-Elements aus der Vorlagendatei.
"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
Eine Liste der Pfadmuster für den Abgleich. Jeder Pfad muss mit / beginnen und kann * als Platzhalterzeichen verwenden. Die Zeichenfolge, die für den Pfadabgleicher bereitgestellt wird, enthält keinen Text nach dem ersten ?
oder #
, und diese Zeichen sind hier nicht zulässig. Ansonsten sind in PathPattern alle Zeichen zulässig, die auch in einer URL zulässig sind.
Bei den Pfadregeln wird die Groß-/Kleinschreibung nicht beachtet.
Pfadmuster | Unterstützt? |
---|---|
/images/* |
ja |
/images* |
Ja |
/images/*.jpg |
nein |
/*.jpg |
Nein |
/Repos/*/Comments/* |
nein |
/CurrentUser/Comments/* |
ja |
Pfadregeln werden in Reihenfolge verarbeitet, basierend darauf, wie sie im Portal aufgeführt werden. Der am wenigsten spezifische Pfad (mit Wildcards) sollte am Ende der Liste stehen, damit er zuletzt verarbeitet wird. Wenn Wildcardregeln am Anfang der Liste vorhanden sind, haben sie Vorrang und werden zuerst verarbeitet. Sehen Sie sich die folgenden Beispielszenarien an.
Beispiele
Pfadbasierte Regelverarbeitung, wenn Platzhalter (*) verwendet wird:
Beispiel 1:
/master-dev* to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/* to microsoft.com
Da sich der Platzhalterpfad /master-dev*
oberhalb präziserer Pfade befindet, werden alle Clientanforderungen, die /master-dev
enthalten, an contoso.com weitergeleitet, einschließlich des spezifischen /master-dev/api-core/
. Um sicherzustellen, dass die Clientanforderungen an die entsprechenden Pfade weitergeleitet werden, ist es wichtig, dass sich die präzisen Pfade oberhalb von Platzhalterpfaden befinden.
Beispiel 2:
/ (default) to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/api to bing.com
/master-dev/* to microsoft.com
Alle Clientanforderungen mit dem Pfadmuster /master-dev/*
werden in der aufgeführten Reihenfolge verarbeitet. Wenn innerhalb der Pfadregeln keine Übereinstimmung besteht, wird die Anforderung an das Standardziel weitergeleitet.
Weitere Informationen finden Sie unter Resource Manager-Vorlage mit URL-basiertem Routing.
PathBasedRouting-Regel
RequestRoutingRule vom Typ PathBasedRouting wird verwendet, um einen Listener an ein urlPathMap-Element zu binden. Alle Anforderungen, die für diesen Listener empfangen werden, werden basierend auf einer in urlPathMap angegebenen Richtlinie weitergeleitet. Codeausschnitt einer PathBasedRouting-Regel:
"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}"
}
}
}
]
Nächste Schritte
Nachdem Sie sich mit dem URL-basierten Inhaltsrouting vertraut gemacht haben, können Sie mit Erstellen eines Anwendungsgateways mit URL-basiertem Routing fortfahren, um ein Anwendungsgateway mit URL-Routingregeln zu erstellen.