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.

imageURLroute

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.

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.