Compartir a través de

使用 Azure 应用程序网关执行基于参数的路径选择 - Azure 门户

本文介绍了如何使用 Azure 门户配置应用程序网关 v2 SKU 实例,以通过将 URL 重写功能与基于路径的路由相结合来执行基于参数的路径选择。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

准备阶段

若要完成本文中的步骤,需要有应用程序网关 v2 SKU 实例。 v1 SKU 不支持 URL 重写和标头重写。 如果没有 v2 SKU,请在开始之前创建应用程序网关 v2 SKU 实例。

登录 Azure

使用 Azure 帐户登录到 Azure 门户

配置基于参数的路径选择

对于此示例,你有一个购物网站,并且产品类别作为查询字符串在 URL 中传递,并且你想要基于查询字符串将请求路由到后端,你将执行以下步骤:

步骤 1:创建如下图所示的路径映射:

URL 重写方案 1-1 的屏幕截图。

步骤 2 (a): 创建包含 3 条重写规则的重写集:

  • 第一条规则有一个条件,用于检查 query_string 变量中是否有“category=shoes”,并且有一个操作,用于将 URL 路径重写为 /listing1,此外还启用了“重新评估路径映射”功能

  • 第二条规则有一个条件,用于检查 query_string 变量中是否有“category=bags”,并且有一个操作,用于将 URL 路径重写为 /listing2,此外还启用了“重新评估路径映射”功能

  • 第三条规则有一个条件,用于检查 query_string 变量中是否有“category=accessories”,并且有一个操作,用于将 URL 路径重写为 /listing3,此外还启用了“重新评估路径映射”功能

    URL 重写方案 1-2 的屏幕截图。

步骤 2 (b):将此重写集与上述基于路径的规则的默认路径相关联:

URL 重写方案 1-3 的屏幕截图。

如果用户请求 contoso.com/listing?category=any,则它会与默认路径匹配,因为路径映射中的任何路径模式 (/listing1, /listing2, /listing3) 都不匹配。 由于你已将前述重写集与此路径相关联,因此系统会对此重写集进行评估。 由于查询字符串与此重写集中的 3 个重写规则中的任何一个条件不匹配,因此不会执行重写操作。 因此,将请求路由到与默认路径(即 GenericList)关联的后端。

如果用户请求了 contoso.com/listing?category=shoes,则会匹配默认路径。 但是,在这种情况下,第一个规则中的条件是匹配的。 因此,将执行与条件关联的操作,该操作将 URL 路径重写为 /listing1 并重新计算路径映射。 重新评估路径映射时,请求会匹配与模式 /listing1 相关联的路径,系统会将请求路由到与此模式关联的后端,即 (ShoesListBackendPool)

注意

可以根据所定义的条件将此方案扩展到任何标头或 Cookie 值、URL 路径、查询字符串或服务器变量。因此,实际上你能够根据这些条件路由请求。

后续步骤

若要详细了解如何设置某些常见用例,请参阅常见标头重写方案