重写 Azure 应用程序网关中的 HTTP 请求和响应标头 - Azure 门户

本文介绍如何使用 Azure 门户配置 Azure 应用程序网关 v2 SKU 实例,重写请求和响应中的 HTTP 标头。

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

开始之前

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

创建所需对象

若要配置 HTTP 标头重写,请执行以下步骤。

  1. 创建 HTTP 标头重写所需的对象:

    • 重写操作:用于指定要重写的请求和请求标头字段,以及标头的新值。 可将一个或多个重写条件关联到一个重写操作。

    • 重写条件:一个可选配置。 重写条件评估 HTTP(S) 请求和响应的内容。 如果 HTTP 请求或响应与重写条件匹配,则会发生重写操作。

      如果将多个条件关联到一个操作,仅当满足所有条件时,才会发生该操作。 换言之,操作属于逻辑 AND 运算。

    • 重写规则:包含多个重写操作/重写条件的组合。

    • 规则顺序:帮助确定重写规则的执行顺序。 在一个重写集中使用多个重写规则时,此配置非常有用。 规则顺序值较小的重写规则最先运行。 如果为两个重写规则分配了相同的规则顺序值,则执行顺序是不确定的。

    • 重写集:包含要与请求路由规则关联的多个重写规则。

  2. 将重写集附加到路由规则。 重写配置将通过路由规则附加到源侦听器。

    • 使用基本路由规则时,标头重写配置与源侦听器相关联,并且是全局标头重写。
    • 使用基于路径的路由规则时,将在 URL 路径映射中定义标头重写配置。 在这种情况下,该规则只会应用到站点的特定路径区域。

可以创建多个 HTTP 标头重写集,并将每个重写集应用到多个侦听器。 但是,对于一个特定的侦听器,只能应用一个重写集。

登录 Azure

使用 Azure 帐户登录到 Azure 门户

配置标头重写

在此示例中,我们会修改重定向 URL,方法是:重写由后端应用程序发送的 HTTP 响应中的 location 标头。

  1. 选择“所有资源”,然后选择你的应用程序网关 。

  2. 在服务窗格中,选择“重写”

  3. 选择“重写集”。

    显示添加重写集的屏幕截图。

  4. 为重写集提供一个名称,并将其与路由规则相关联:

    1. 在“名称”框中输入重写集的名称。
    2. 在“关联的路由规则”列表中,选择一个或多个规则。 仅选择尚未与其他重写集关联的规则。 已经与其他重写集关联的规则处于灰显状态。
    3. 选择下一步

    显示添加名称和关联的屏幕截图。

  5. 创建重写规则:

    1. 选择“添加重写规则”。

      显示添加重写规则的屏幕截图。

    2. 在“重写规则名称”框中输入重写规则的名称。 在“规则顺序”框中输入一个数字。

      显示添加重写规则名的屏幕截图。

  6. 在此示例中,只有在 location 标头包含对 chinacloudsites.cn 的引用时,我们才会重写该标头。 若要执行此步骤,请添加一个条件来评估响应中的 location 标头是否包含 chinacloudsites.cn

    1. 选择“添加条件”,然后选择包含 If 指令的框将其展开。

      屏幕截图显示添加条件。

    2. 在“要检查的变量的类型”列表中,选择“HTTP 标头”。

    3. 在“标头类型”列表中选择“响应”。

    4. 在“标头名称”下选择“常用标头”。 在此示例中,我们会评估位置标头,这是一个通用标头。

    5. 在“常用标头”列表中选择“Location”。

    6. 在“区分大小写”下选择“否”。

    7. 在“运算符”列表中选择“等于(=)”。

    8. 输入正则表达式模式。 在此示例中,我们使用 (https?):\/\/.*chinacloudsites.cn(.*)$ 模式。

    9. 选择“确定”

    显示配置 If 条件的屏幕截图。

  7. 添加操作来重写 location 标头:

    1. 在“操作类型”列表中,选择“设置”。
    2. 在“标头类型”列表中选择“响应”。
    3. 在“标头名称”下选择“常用标头”。
    4. 在“常用标头”列表中选择“Location”。
    5. 输入标头值。 在此示例中,我们会使用 {http_resp_Location_1}://contoso.com{http_resp_Location_2} 作为标头值。 此值将 chinacloudsites.cn 替换为位置标头中的 contoso.com
    6. 选择“确定”

    显示添加操作的屏幕截图。

  8. 选择“创建”以创建重写集。

    显示选择“创建”的屏幕截图。

  9. 此时会打开“重写”窗格。 验证已创建的重写集是否位于重写集列表中。

    显示重写集视图的屏幕截图。

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