使用高级策略绑定策略

定义策略后,您可以通过将策略绑定到绑定点并指定优先级级别来指明何时调用策略。一个策略只能绑定到一个绑定点。绑定点可以是全局的,也就是说,它可以应用于已配置的所有虚拟服务器。或者,绑定点可以特定于特定虚拟服务器,该虚拟服务器可以是负载平衡或内容交换虚拟服务器。并非所有绑定点都可用于所有功能。

策略的评估顺序决定了策略的应用顺序,功能通常会按特定顺序评估各种策略银行。但是,有时,其他功能可能会影响评估顺序。在策略库中,评估顺序取决于策略中配置的参数值。大多数功能应用与策略关联的所有操作,其评估结果与正在处理的数据匹配。集成缓存功能是一个例外。

策略绑定中特定于功能的差异

您可以将策略绑定到内置的全局绑定点(或数据库)、虚拟服务器或策略标签。

但是,Citrix ADC 的功能因可用的绑定类型而异。下表总结了如何在使用策略的各种 Citrix ADC 功能中使用策略绑定。

功能名称 在功能中配置的虚拟服务器 在功能中配置的策略 为策略配置的绑定点 在功能中使用策略
DNS DNS 策略 全局 确定如何对请求执行 DNS 解析。
内容切换(注意:此功能可以支持经典策略或高级策略,但不能同时支持两种策略。) 内容切换 (CS) 内容交换策略 内容切换或缓存重定向虚拟服务器;策略标签 根据传入请求的特性,确定哪个服务器或服务器组负责提供响应。请求特征包括设备类型、语言、Cookie、HTTP 方法、内容类型和关联的缓存服务器。
集成缓存 缓存策略 全局覆盖、全局默认、策略标签、负载平衡、内容切换或 SSL 卸载虚拟服务器 确定 HTTP 响应是否可以存储在 Citrix ADC 设备的集成缓存中并从其中提供服务。
响应方 响应程序策略 全局覆盖、全局默认、策略标签、负载平衡、内容切换或 SSL 卸载虚拟服务器 配置响应程序函数的行为。
重写 重写策略 全局覆盖、全局默认、策略标签、负载平衡、内容切换或 SSL 卸载虚拟服务器 确定要在处理之前修改的 HTTP 数据。这些策略提供了修改数据的规则。例如,您可以修改 HTTP 数据,以便根据传入请求的地址将请求重定向到所选服务器,或者出于安全考虑掩盖响应中的服务器信息。
重写功能中的 URL 转换函数 转型策略 全局覆盖、全局默认、策略标签 识别 HTTP 事务和文本文件中的 URL,以评估是否应更改 URL。
Citrix Gateway(仅限无客户端 VPN 功能) VPN 服务器 无客户端访问策略 VPN 全局,VPN 服务器 确定 Citrix Gateway 关如何执行身份验证、授权、审核和其他功能,以及使用 Citrix Gateway 定义常规 Web 访问的重写规则。

绑定点和评估顺序

要使策略生效,您必须确保在处理过程中的某个时间点调用该策略。为此,请将策略与绑定点关联。绑定到绑定点的策略集合称为策略库。

下面是 Citrix ADC 评估的绑定点,按策略库中的典型评估顺序列出

  1. 请求时间覆盖。当请求流经某个功能时,Citrix ADC 首先评估该功能的请求时间覆盖策略。
  2. 请求时间负载平衡虚拟服务器。如果在评估所有请求时间覆盖策略后无法完成策略评估,Citrix ADC 将处理负载平衡虚拟服务器的请求时间策略。
  3. 请求时间内容切换虚拟服务器。如果在评估负载平衡虚拟服务器的所有请求时间策略后无法完成策略评估,Citrix ADC 将处理内容交换虚拟服务器的请求时间策略。
  4. 请求时间默认值。如果在所有请求时间之后无法完成策略评估,并评估了特定于虚拟服务器的策略,Citrix ADC 将处理请求时间高级策略。
  5. 响应时间覆盖。在响应时,Citrix ADC 从绑定到响应时间覆盖绑定点的策略开始。
  6. 响应时间负载平衡虚拟服务器。如果在评估所有响应时间覆盖策略后无法完成策略评估,Citrix ADC 将处理负载平衡虚拟服务器的响应时间策略。
  7. 响应时间内容切换虚拟服务器。如果在评估负载平衡虚拟服务器的所有策略后无法完成策略评估,Citrix ADC 将处理内容交换虚拟服务器的响应时间策略。
  8. 默认响应时间。如果在所有响应时间、特定于虚拟服务器的策略均已评估后无法完成策略评估,Citrix ADC 将处理响应时间高级策略。

跨特征的策略评估

除了参与评估功能内的策略之外,如果您已将策略绑定到内容交换虚拟服务器,请注意,这些策略会先评估其他策略。将策略绑定到内容交换虚拟服务器会在 Citrix ADC 9.0.x 版本中产生的结果不同于 8.x 版本的结果。在 Citrix ADC 9.0 及更高版本中,按以下方式进行评估:

  • 内容交换策略先评估其他策略。如果内容交换策略的计算结果为 TRUE,则选择目标负载平衡虚拟服务器。
  • 如果所有内容交换策略都评估为 FALSE,则会选择内容交换 VIP 下的默认负载平衡虚拟服务器。

内容切换过程选择目标负载平衡虚拟服务器后,将按以下顺序评估策略:

  1. 绑定到全局覆盖绑定点的策略。
  2. 绑定到默认负载平衡虚拟服务器的策略。
  3. 绑定到目标内容切换虚拟服务器的策略。
  4. 绑定到全局默认绑定点的策略。

要确保按预期顺序评估策略,请遵循以下准则:

  • 请确保默认负载平衡虚拟服务器不能从外部直接访问;例如,虚拟服务器 IP 地址可以为 0.0.0.0。
  • 要防止在负载平衡默认虚拟服务器上暴露内部数据,请将策略配置为“503 服务不可用”状态进行响应,并将其绑定到默认负载平衡虚拟服务器。

策略银行中的条目

策略库中的每个条目至少都有一个策略和一个优先级。您还可以配置更改基于优先级的评估顺序的条目,也可以配置调用外部策略库的条目。

下表汇总了策略库中的每个条目。

策略名称 优先级 Goto 表达式 调用类型 要调用的策略银行
策略名称或名为 NOPOLICY 的“虚拟”策略。NOPOLICY 条目控制评估流程,而无需处理规则。 整数。 可选。确定银行中要评估的下一个策略,或结束任何进一步评估 可选。指示将调用外部策略库。此字段将选择限制为全局策略标签或虚拟服务器。 可选。与调用类型一起使用。这是策略库或虚拟服务器名称的标签。Citrix ADC 在处理外部银行后返回到当前银行。

如果策略的计算结果为 TRUE,Citrix ADC 将存储与策略关联的操作。如果策略的计算结果为 FALSE,Citrix ADC 将评估下一个策略。如果策略既不是 TRUE 也不是 FALSE,Citrix ADC 将使用关联的 Und(未定义)操作。

策略库内的评估订单

在策略库中,评估顺序取决于以下项目:

  • 优先级。

    有关评估顺序的最小信息量是数字优先级级别。数字越低,优先级越高。

  • Goto 表达式。

    如果提供,Goto 表达式指示要评估的下一个策略,通常位于同一策略库中。Goto 表达式只能在银行继续前进。为了防止循环,如果 Goto 语句在库中向后指向,策略库配置无效。

  • 调用其他策略银行。

    任何条目都可以调用外部策略库。Citrix ADC 提供了一个名为 NOPOLICY 的内置实体,但该实体没有规则。如果您希望调用另一个策略银行,但不希望在调用之前处理任何其他规则,则可以在策略银行中添加一个 NOPOLICY 条目。您可以在多个策略银行中拥有多个 NOPOLICY 条目。

Goto 表达式的值如下所示:

  • NEXT。

    此关键字在当前策略库中选择具有下一个更高优先级级别的策略。

  • 整数。

    如果您提供整数,则该整数必须与当前策略库中其他策略的优先级别匹配。

  • END。

    此关键字在处理当前策略后停止评估,并且不处理此库中的其他策略。

  • 空白。

    如果 Goto 表达式为空,则与指定 END 相同。

  • 数字表达式。

    这是一个高级策略表达式,解析为当前银行中另一个策略的优先级编号。

  • USE_INVOCATION_RESULT。

    此短语只能在您调用外部策略库时使用。输入此短语将导致 Citrix ADC 执行以下操作之一:

    • 如果调用的策略库中的最终 Goto 的值为 END 或为空,则调用结果为 END,并且评估将停止。
    • 如果调用的策略库中的最终 Goto 表达式不是 END,则 Citrix ADC 将执行 NEXT。

下表说明了使用 Goto 语句和策略银行调用的策略银行。

策略名称 优先级 转到 调用 要调用的策略银行
客户端证书策略(规则:请求是否包含客户端证书?) 100 300
子网策略(规则:客户端是否来自私有子网?) 200 NEXT
NOPOLICY 300 USE INVOCATION RESULT 请求虚拟服务器 My_Request_VServer
NOPOLICY 350 USE INVOCATION RESULT 策略标签 我的策略标签
WorkingHoursPolicy(规则:是工作时间吗?) 400 END

表 3. 使用 Goto 和外部银行调用的策略银行示例

策略评估如何结束

当发生以下情况之一时,策略银行的评估结束:

  • 策略的计算结果为 TRUE,其 Goto 语句值为 END。

    此功能中不会对其他策略或策略银行进行评估。

  • 调用外部策略库,其评估将返回 END,并且 Goto 语句使用 USE_INVOCATION_RESULT 结果或 END 的值。

    继续评估此功能的下一个策略库。例如,如果当前库是请求时间覆盖库,Citrix ADC 下一步会评估虚拟服务器的请求时间策略库。

  • Citrix ADC 已遍历此功能中的所有策略库,但未遇到 END。

    如果这是此策略库中要评估的最后一个条目,Citrix ADC 将继续使用下一个功能。

策略评估后功能如何使用操作

在评估特定数据点的所有相关策略(例如 HTTP 请求)后,Citrix ADC 将存储与匹配数据的任何策略关联的所有操作。

对于大多数功能,匹配策略中的所有操作都会在流量数据包离开 Citrix ADC 时应用到该数据包。集成缓存功能仅应用一个操作:CACHE 或 NOCACHE。此操作与“最高优先级”策略库中具有最低优先级值的策略相关联(例如,在虚拟服务器特定策略之前应用请求时间覆盖策略)。