Citrix ADC

重写

重写是指重写 Citrix ADC 设备处理的请求或响应中的某些信息。重写可以帮助提供对请求的内容的访问权限,而不会暴露与 Web 站点的实际配置有关的不必要的详细信息。下面描述了重写功能非常有用的几种情况:

  • 为了提高安全性,Citrix ADC 可以将响应正文中的所有 http://links 重写到 https:// 中。
  • 如果网站必须显示错误页面,则可以显示自定义错误页面,而不是默认的 404 错误页面。例如,如果您显示的是 Web 页面的主页或站点地图,而非错误页面,访客将停留在站点上,而非离开 Web 站点。

  • 如果您想启动新 Web 站点,但使用旧 URL,则可以使用“Rewrite”(重写)选项。

  • 当站点中的某个主题具有复杂的 URL 时,您可以使用简单易记的 URL(也称为“cool URL”)对其进行重写。

  • 可以将默认页面名称附加到 Web 站点的 URL 中。例如,如果某家公司的 Web 站点的默认页面为 http://www.abc.com/index.php,当用户在浏览器的地址栏中键入“abc.com”时,您可以将该 URL 重写为“abc.com/index.php”。 启用重写功能后,Citrix ADC 可以修改 HTTP 请求和响应的标头和正文。可以修改 Citrix ADC 生成的响应(包括 401 错误响应和 407 错误响应)。

要重写 HTTP 请求和响应,可以在配置的重写策略中使用协议感知的 Citrix ADC 策略表达式。管理 HTTP 请求和响应的虚拟服务器的类型必须为 HTTP 或 SSL。在 HTTP 流量中,您可以执行以下操作:

  • 修改请求的 URL
  • 添加、修改或删除标题
  • 添加、替换或删除正文或标题中的任何特定字符串。

重写的工作原理

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

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

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

策略按以下顺序进行评估:

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

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

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

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

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

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

    可以指定策略的优先级以指示“ 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 上启用该功能。
  • 定义重写操作。
  • 定义重写策略。
  • 将策略绑定到绑定点以使策略生效。
重写