使用高级策略绑定策略
定义策略后,您可以通过将策略绑定到绑定点来指示何时激活策略。然后指定优先级别。
只将策略绑定到一个绑定点。绑定点可以是全局性的。全局绑定点适用于配置的虚拟服务器。或者,绑定点可以特定于特定的虚拟服务器;负载平衡或内容交换虚拟服务器。并非所有绑定点都可用于所有功能。
评估策略的顺序决定了策略的应用顺序。这些功能通常按特定顺序评估各种保单银行。
有时,其他功能可能会影响保单库内的评估顺序。评估顺序取决于策略中配置的参数值。大多数功能都应用与策略相关联的操作,其评估结果与正在处理的数据匹配。集成缓存功能是一个例外。
策略绑定中特定功能的差异
您可以将策略绑定到内置的全局绑定点(或数据库)、虚拟服务器或策略标签。
但是,NetScaler 的功能因可用绑定类型而异。下表总结了如何在使用策略的各种 NetScaler 功能中使用策略绑定。
功能名称 | 在功能中配置的虚拟服务器 | 在功能中配置的策略 | 为策略配置的绑定点 | 在功能中使用策略 |
---|---|---|---|---|
DNS | 无 | DNS 策略 | 全局 | 确定如何对请求执行 DNS 解析。 |
内容切换(注意:此功能可以支持高级策略,但不能同时支持两者。) | 内容切换 (CS) | 内容切换策略 | 内容切换或缓存重定向虚拟服务器;策略标签 | 根据传入请求的特征,确定哪个服务器或服务器组负责提供响应。请求特征包括设备类型、语言、Cookie、HTTP 方法、内容类型和关联的缓存服务器。 |
集成缓存 | 无 | 缓存策略 | 全局覆盖、全局默认值、策略标签、负载平衡、内容切换或 SSL 卸载虚拟服务器 | 确定 HTTP 响应是否可以存储在 NetScaler 设备的集成缓存中并从中提供服务。 |
响应方 | 无 | 响应者策略 | 全局覆盖、全局默认值、策略标签、负载平衡、内容切换或 SSL 卸载虚拟服务器 | 配置响应程序函数的行为。 |
重写 | 无 | 重写策略 | 全局覆盖、全局默认值、策略标签、负载平衡、内容切换或 SSL 卸载虚拟服务器 | 确定要在处理之前修改的 HTTP 数据。这些策略提供了修改数据的规则。例如,您可以修改 HTTP 数据以将请求重定向到选定的服务器。此修改基于传入请求的地址。或者,出于安全考虑,在响应中掩盖服务器信息。 |
重写功能中的 URL 转换函数 | 无 | 转型策略 | 全局覆盖、全局默认、策略标签 | 在评估是否必须更改 URL 时识别 HTTP 事务和文本文件中的 URL。 |
NetScaler Gateway(仅限无客户端 VPN 功能) | VPN 服务器 | 无客户端访问策略 | VPN 全局,VPN 服务器 | 确定 NetScaler Gateway 的功能:身份验证、授权、审计和其他功能,并使用 NetScaler Gateway 为常规 Web 访问定义重写规则。 |
绑定点和评估顺序
要使策略生效,您必须确认该策略在处理过程中的某个时候已激活。为此,请将策略与绑定点关联。绑定到绑定点的策略集合称为策略库。
以下是 NetScaler 评估的绑定点,按策略库内的典型评估顺序列出
- 请求时间覆盖。当请求流经某个功能时,NetScaler 首先评估该功能的请求时间替代策略。
- 请求时间负载平衡虚拟服务器。如果在请求时间替代策略评估后策略评估不完整,NetScaler 将处理用于负载平衡虚拟服务器的请求时间策略。
- 请求时间内容切换虚拟服务器。如果在评估负载平衡虚拟服务器的请求时间策略之后,策略评估未完成,则 NetScaler 会处理内容交换虚拟服务器的请求时间策略。
- 请求时间默认。如果在评估了所有请求时间、虚拟服务器特定策略之后仍无法完成策略评估,则 NetScaler 将处理请求时间高级策略。
- 响应时间取代。在响应时,NetScaler 从绑定到响应时间覆盖绑定点的策略开始。
- 响应时间负载平衡虚拟服务器。如果在评估了所有响应时间替代策略后无法完成策略评估,则 NetScaler 会处理负载平衡虚拟服务器的响应时间策略。
- 响应时间内容切换虚拟服务器。如果负载平衡虚拟服务器的策略评估后策略评估不完整,NetScaler 将处理内容交换虚拟服务器的响应时间策略。
- 默认响应时间。如果在评估了所有响应时间、特定于虚拟服务器的策略之后仍无法完成策略评估,则 NetScaler 将处理响应时间高级策略。
跨特征的策略评估
如果策略绑定到内容交换虚拟服务器。除了功能中的策略评估之外。在其他策略之前对策略进行评估。
在 NetScaler 版本 9.0.x 及更高版本中,将策略绑定到内容交换虚拟服务器会产生不同的结果。在 NetScaler 9.0 及更高版本中,评估方式如下:
- 在其他策略之前评估内容切换策略。如果内容交换策略的评估结果为 TRUE,则会选择目标负载平衡虚拟服务器。
- 如果所有内容交换策略的评估均为 FALSE,则会选择内容交换 VIP 下的默认负载平衡虚拟服务器。
内容交换过程选择目标负载平衡虚拟服务器后,将按以下顺序评估策略:
- 绑定到全局覆盖绑定点的策略。
- 绑定到默认负载平衡虚拟服务器的策略。
- 绑定到目标内容交换虚拟服务器的策略。
- 绑定到全局默认绑定点的策略。
为确保按预期顺序评估策略,请遵循以下准则:
- 确保默认的负载平衡虚拟服务器无法从外部直接访问;例如,虚拟服务器 IP 地址可以是 0.0.0.0。
- 要防止在负载平衡默认虚拟服务器上暴露内部数据,请将策略配置为以“503 Service 不可用”状态进行响应,然后将其绑定到默认负载平衡虚拟服务器。
策略库的条目
策略库中的每个条目都至少有一个策略和一个优先级级别。您还可以配置更改基于优先级的评估顺序的条目,还可以配置调用外部策略库的条目。
下表总结了策略库中的每个条目。
策略名称 | 优先级 | Goto 表达式 | 调用类型 | 要调用的策略库 |
---|---|---|---|---|
策略名称或名为 NOPOLICY 的“虚拟”策略。NOPOLICY 条目在不处理规则的情况下控制评估流程。 | 整数。 | 可选。确定银行中要评估的下一个保单,或结束任何进一步的评估 | 可选。表示将调用外部策略库。此字段将选择限制为全局策略标签或虚拟服务器。 | 可选。与调用类型一起使用。这是策略库或虚拟服务器名称的标签。NetScaler 在处理外部存储库后返回到当前库。 |
如果策略的评估结果为 TRUE,NetScaler 将存储与策略关联的操作。如果策略的评估结果为 FALSE,NetScaler 将评估下一个策略。如果策略既不是 TRUE 也不是 FALSE,NetScaler 将使用关联的 Uneff(未定义)操作。
策略库内的评估顺序
在保单银行内,评估顺序取决于以下项目:
-
一个优先事项。
有关评估订单的最小数量的信息是数字优先级。数字越低,优先级越高。
-
Goto 表达式。
如果提供,Gto 表达式将指示要评估的下一个策略,通常在同一个策略库中。Goto 表达式只能在库继续前进。为防止循环,如果 Gto 语句在库中向后指向,则策略库配置无效。
-
调用其他策略库。
任何条目都可以调用外部策略库。NetScaler 提供了一个名为 NOPOLICY 的内置实体,它没有规则。当您想调用另一个策略库但不想在调用之前处理任何其他规则时,可以在策略库中添加 NOPOLICY 条目。可以在多个策略库中有多个 NOPOLICY 条目。
Goto 表达式的值如下:
-
NEXT。
此关键字在当前策略库中选择具有下一个更高优先级级别的策略。按优先级顺序评估策略,从编号较低的优先级到编号较高的优先级。
-
整数。
如果提供一个整数,它必须与当前策略库中另一个策略的优先级相匹配。
-
END。
此关键字在处理当前保单后停止评估,并且不会处理该银行中的其他保单。
-
空白。
如果 Goto 表达式为空,则与指定 END 相同。
-
数字表达式。
这是一个高级的策略表达式,解析为当前库中的另一个策略的优先级编号。
-
USE_INVOCATION_RESULT。
只有在调用外部保单银行时,才能使用此短语。输入此短语会导致 NetScaler 执行以下操作之一:
- 如果被调用的策略库中的最终 Goto 值为 END 或为空,则调用结果为 END,评估将停止。
- 如果调用的策略库中的最后一个 Goto 表达式不是 END,则 NetScaler 会执行 NEXT。
下表说明了使用 Goto 语句和策略库调用的策略库。
策略名称 | 优先级 | Goto | 调用 | 要调用的策略库 |
---|---|---|---|---|
客户端证书策略(规则:请求是否包含客户端证书?) | 100 | 300 | 无 | 无 |
Subnet策略(规则:客户端来自私有子网吗?) | 200 | NEXT | 无 | 无 |
NOPOLICY | 300 | USE INVOCATION RESULT | 请求虚拟服务器 | My_Request_VServer |
NOPOLICY | 350 | USE INVOCATION RESULT | 策略标签 | My_Policy_Label |
工作时间策略(规则:是工作时间吗?) | 400 | END | 无 | 无 |
表 3. 使用 Goto 和外部策略库的策略库示例
策略评估如何结束
当发生以下情况之一时,对保单银行的评估结束:
-
策略的评估结果为 TRUE,其 Gto 语句值为 END。
此功能中不会进一步评估任何策略或保单银行。
-
调用外部策略库,其评估返回 END,Goto 语句使用 USE_INVOCATION_RESULT 或 END 的值。
对此功能的下一个策略库继续进行评估。例如,如果当前库是请求时间覆盖库,NetScaler 接下来会评估虚拟服务器的请求时间策略库。
-
NetScaler 已遍历此功能中的所有策略库,但尚未遇到结束。
如果这是此策略库中要评估的最后一个条目,NetScaler 将继续使用下一个功能。
策略评估后功能如何使用操作
在评估特定数据点的所有相关策略(例如,HTTP 请求)后,NetScaler 会存储与任何与数据匹配的策略相关的所有操作。
对于大多数功能,匹配策略中的所有操作都将在流量包离开 NetScaler 时应用于该数据包。集成缓存功能只应用一个操作:CACHE 或 NOCACHE。此操作与“最高优先级”策略库中具有最低优先级值的策略相关联(例如,在特定于虚拟服务器的策略之前应用请求时间覆盖策略)。