ADC

重写的工作原理

重写策略由规则和操作组成。规则确定应用重写的流量,操作确定 Citrix ADC 要执行的操作。可以定义多个重写策略。对于每个策略,请指定绑定点和优先级。

绑定点是指通信流中的某个点,Citrix ADC 在该点检查流量以验证是否可以对其应用任何重写策略。可以将策略绑定到特定的负载平衡或内容交换虚拟服务器,或者如果您希望将策略应用到 Citrix ADC 处理的整个流量,则可以将策略设为全局策略。这些策略称为全局策略。

除了用户定义的策略外,Citrix ADC 还有一些默认策略。不能修改或删除默认策略。

为了评估策略,Citrix ADC 遵循以下顺序:

  • 全局策略
  • 绑定到特定虚拟服务器的策略
  • 默认策略

注意:Citrix ADC 只能在绑定到某个点时应用重写策略。

Citrix ADC 通过以下步骤实现重写功能:

  • Citrix ADC 设备将检查全局策略,然后在各个绑定点检查策略。

  • 如果多个策略绑定到一个绑定点,Citrix ADC 将按策略的优先级顺序评估策略。首先对具有最高优先级的策略进行评估。评估每个策略后,如果策略被评估为 TRUE(流量与规则匹配),则会将与策略关联的操作添加到要执行的操作列表中。当策略规则中指定的特性与被评估的请求或响应的特性匹配时,就会发生匹配。

  • 对于任何策略,除了操作之外,您还可以指定评估当前策略后应评估的策略。此策略称为“Go to 表达式”。对于任何策略,如果指定了Goto 表达式 (GotopriorityExPR),Citrix ADC 将评估Goto 表达式策略;它将忽略具有下一个最高优先级的策略。

    可以指定策略的优先级以指示“ Go to 表达式”策略;不能使用策略的名称。如果希望 Citrix ADC 在评估特定策略后停止评估其他策略,则可以将 Go to 表达式设置为“END”。

  • 评估所有策略后或策略将 Go to 表达式设置为 END 时,Citrix ADC 将根据操作列表开始执行操作。

有关配置重写策略的更多信息,请参阅 配置重写策略 和绑定重写策略,请参阅 绑定重写策略

下图说明了使用重写功能时 Citrix ADC 如何处理请求或响应。

图 1. 重写过程

image

策略评估

首先对具有最高优先级的策略进行评估。Citrix ADC 在找到匹配项时不会停止重写策略的评估;它会评估在 Citrix ADC 上配置的所有重写策略。

  • 如果策略的计算结果为 TRUE,Citrix ADC 将遵循以下步骤:
    • 如果策略将“Go to 表达式”设置为“END”,Citrix ADC 将停止评估所有其他策略并开始执行重写。
    • gotoPriorityExpression 可以设置为为“NEXT”、“END”、某个整数或“INVOCATION_LIST”。该值确定具有下一个优先级的策略。下表显示了 Citrix ADC 对表达式的每个值采取的操作。

      表达式的值 操作
      NEXT 评估具有下一个优先级的策略。
      END 停止策略的评估。
      <an integer> 评估具有指定优先级的策略。
      INVOCATION_LIST 根据调用列表的结果应用 Goto NEXT 或 END。
  • 如果策略的评估结果为 FALSE,Citrix ADC 将按优先级顺序继续评估。
  • 如果策略的评估结果为 UNDEFINED(由于错误而无法对收到的流量进行评估),Citrix ADC 将执行分配给 UNDEFINED 条件(称为 undefAction)的操作,并停止对策略的进一步评估。

Citrix ADC 仅在评估完成后才开始实际的重写。它指的是被评估为 TRUE 的策略确定的操作列表,然后开始重写。实施列表中的所有操作后,Citrix ADC 将根据需要转发流量。

注意

确保策略不在 HTTP 标头、正文或 TCP 有效负载的同一部分指定冲突或重叠操作。发生此类冲突时,Citrix ADC 会遇到未定义的情况并中止重写。

重写操作

在 Citrix ADC 设备上,指定要执行的操作,例如添加、替换或删除正文中的文本,或添加、修改或删除标头,或将 TCP 负载中的任何更改作为重写操作。有关重写操作的更多信息,请参阅 配置重写操作。

下表介绍了策略评估为 TRUE 时 Citrix ADC 可以执行的步骤。

操作 结果
Insert 执行为策略指定的重写操作。
NOREWRITE 请求或响应不会被重写。Citrix ADC 在不重写消息的任何部分的情况下转发流量。
RESET 连接在 TCP 级别中止。
DROP 消息被丢弃。

注意

对于任何策略,您都可以将 undefaction(策略评估为 UNDEFINED 时要执行的操作)配置为 NOREWRITE、RESET 或 DROP。

要使用 重写功能,请执行以下步骤:

  • 在 Citrix ADC 上启用该功能。
  • 定义重写操作。
  • 定义重写策略。
  • 将策略绑定到绑定点以使策略生效。
重写的工作原理