配置缓存重定向策略

缓存重定向策略包含一个或多个表达式(也称为 规则)。每个表达式都表示在将客户端请求与策略进行比较时评估的条件。

您不显式配置缓存重定向策略的操作。默认情况下,Citrix ADC 设备将任何与策略匹配的请求视为不可缓存,并将请求定向到源服务器而不是缓存。

基于经典策略格式的缓存重定向策略称为经典缓存重定向策略。每个此类策略都有一个名称,包括一个经典表达式或一组经典表达式,这些表达式通过使用逻辑运算符进行组合。

对于传统的缓存重定向策略,您不显式配置策略的操作。默认情况下,Citrix ADC 设备将任何与策略匹配的请求视为不可缓存,并将请求定向到源服务器而不是缓存。

基于较新策略格式的缓存重定向策略称为 高级重定向策略。此类策略具有一个名称,包括默认语法表达式或一组默认语法表达式(通过使用逻辑运算符组合)以及以下内置操作:

  • CACHE
  • ORIGIN

有关经典表达式和默认语法表达式的更多信息,请参阅 策略和表达式

使用 CLI 添加缓存重定向策略

在命令提示符处,键入以下命令以添加缓存重定向策略并验证配置:

-  add cr policy <policyName> \*\*-rule\*\* <expression>
-  show cr policy [<policyName>]

示例:

具有简单表达式的策略:

> add cr policy Policy-CRD-1 -rule "REQ.HTTP.URL != /\*.jpeg"
 Done
> show cr policy Policy-CRD-1
         Cache-By-Pass RULE: REQ.HTTP.URL != '/\*.jpeg'   Policy:Policy-CRD-1
 Done

具有复合表达式的策略:

> add cr policy Policy-CRD-2 -rule "REQ.HTTP.METHOD == POST && (REQ.HTTP.URL == /\*.cgi || REQ.HTTP.URL != /\*.gif)"
 Done
> show cr policy Policy-CRD-2
         Cache-By-Pass RULE: REQ.HTTP.METHOD == POST && (REQ.HTTP.URL == '/\*.cgi' || REQ.HTTP.URL != '/\*.gif')   Policy:Policy-CRD-2
 Done

评估标头的策略:

> add cr policy Policy-CRD-3 -rule "REQ.HTTP.HEADER If-Modified-Since EXISTS"
 Done
> show cr policy Policy-CRD-3
         Cache-By-Pass RULE: REQ.HTTP.HEADER If-Modified-Since EXISTS    Policy:Policy-CRD-3
 Done

使用 CLI 添加默认语法缓存重定向策略

在命令提示符处,键入以下命令以添加缓存重定向策略并验证配置:

-  add cr policy <policyName> \*\*-rule\*\* <expression> [-action<string>] [-logAction<string>]
-  show cr policy [<policyName>]

示例:

具有简单表达式的策略:

> add cr policy crpol1 -rule !(HTTP.REQ.URL.ENDSWITH(".jpeg”)) -action origin
 Done
> show cr policy crpoll
         Policy: crpol1 Rule: !(HTTP.REQ.URL.ENDSWITH(".jpeg")) Action: ORIGIN
 Done

具有复合表达式的策略:

> add cr policy crpol11 -rule "http.req.method.eq(post) && (HTTP.REQ.URL.ENDSWITH(".gif") || HTTP.REQ.URL.ENDSWITH(".cgi"))"  -action cache
 Done
> show cr policy crpol11
         Policy: crpol11    Rule: http.req.method.eq(post) && (HTTP.REQ.URL.ENDSWITH(".gif") || HTTP.REQ.URL.ENDSWITH(".cgi"))  Action: CACHE
 Done

评估标头的策略:

> add cr policy crpol12 -rule http.req.header("If-Modified-Since").exists -action origin
 Done
> show cr policy crpol12
         Policy: crpol12    Rule: http.req.header("If-Modified-Since").exists   Action: ORIGIN
 Done

使用 CLI 修改或删除缓存重定向策略

  • 要修改缓存重定向策略,请使用 set cr 策略命令,这就像添加 cr 策略命令一样,只是输入现有策略的名称。
  • 要删除策略,请使用仅接受 <name> 参数的rm cr policy 命令。如果策略绑定到虚拟服务器,则必须先取消绑定该策略,然后才能将其删除。

有关取消绑定缓存重定向策略的详细信息,请参阅从缓存重定向虚拟服务器取消绑定策略

使用 GUI 配置一个简单表达式的缓存重定向策略

  1. 导航到流量管理 > 缓存重定向 > 策略。

  2. 在详细信息窗格中,单击 Add(添加)。

  3. 在“创建缓存重定向策略”对话框的“名称 *”文本框中,键入策略的名称,然后在“表达式”区域中,单击“添加”。

  4. 要配置简单表达式,请输入表达式。以下是检查 URL 中的 .jpeg 扩展名的表达式示例:

    • 表达式类型
    • 流量类型-REQ
    • 通信协议
    • 限定符-URL
    • 操作员-! =
    • -/.jpeg

    以下示例中的简单表达式检查请求中的 If-Modiied-Ii 标头:

    • 表达式类型
    • 流量类型-REQ
    • 通信协议
    • 限定符标题
    • 运算符-存在
    • 标题名称-如果已修改-自
  5. 完成输入表达式后,单击确定或创建,然后单击关闭。

使用 GUI 配置具有复合表达式的缓存重定向策略

  1. 导航到流量管理 > 缓存重定向 > 策略。

  2. 在详细信息窗格中,单击 Add(添加)。

  3. 在“名称”文本框中,输入策略的名称。

    名称可以以字母、数字或下划线符号开头,可以由一到 127 个字母、数字和连字符 (-)、句点 (#)、空格 ()、位于 (@)、等于 (=) 和下划线 (_) 符号组成。您应该选择一个名称,使其他人能够轻松告诉创建此策略要检测的内容类型。

  4. 选择要创建的复合表达式的类型。选项包括:

    • 匹配任何表达式。如果一个或多个单独的表达式与流量匹配,策略将匹配流量。

    • 匹配所有表达式。仅当每个表达式都匹配流量时,策略才匹配流量。

    • 格表达式。将“表达式”列表切换为具有三列的表格格式。在最右侧的列中,放置以下运算符之一:

      • [ && ] AND 运算符要求,为了匹配策略,请求必须匹配当前表达式和以下表达式。
      • [   ] OR 运算符为了要求匹配策略,请求必须匹配当前表达式或以下表达式,或者两者都匹配。只有当请求不匹配任何一个表达式时,它才会与策略不匹配。

      您还可以通过选择现有表达式并单击以下运算符之一,将表达式分组到嵌套子组中:

      • BEGIN SUBGROUP[+ ( ] 运算符,该运算符通知 Citrix ADC 设备使用所选表达式开始嵌套子组。(要从表达式中删除此运算符,请单击-(.)
      • END SUBGROUP[+ ) ] 运算符,它通知 Citrix ADC 设备使用所选表达式结束当前嵌套子组。(要从表达式中删除此运算符,请单击-)。)
    • 先进的自由形状。完全关闭表达式编辑器,并将表达式列表转换为可在其中键入复合表达式的文本区域。这是创建策略表达式的最强大和最困难的方法,仅建议熟悉 Citrix ADC 经典表达式语言的用户使用。

      有关在高级自由格式文本区域中创建经典表达式的更多信息,请参阅配置经典策略和表达式

      警告: 如果切换到高级自由表单表达式编辑模式,则无法切换回任何其他模式。除非您确定要使用此表达式编辑模式,否则请勿选择此表达式编辑模式。

  5. 如果选择“匹配任意表达式”、“匹配所有表达式”或“表格表达式”,请单击“添加”以显示“添加表达式”对话框。

    对于缓存重定向策略,您应将表达式类型设置为常规。

  6. 在“流量类型”下拉列表中,为表达式选择流量类型。

    流类型决定策略是检查传入连接还是传出连接。您有两个选择:

    • REQ。配置 Citrix ADC 设备以检查传入连接或请求。
    • RES。配置设备以检查传出连接或响应。
  7. 在“协议”下拉列表中,为表达式选择一个协议。

    协议确定策略在请求或响应中检查的信息类型。根据您在上一个下拉列表中选择 REQ 还是 RES,以下所有四个选项都可用,还是只有三个选项可用:

    • 网络连接。配置设备以检查 HTTP 标头。
    • SSL。配置设备以检查 SSL 客户端证书。仅当您在上一个下拉列表中选择 REQ(请求)时才可用。
    • 技术合作计划。配置设备以检查 TCP 标头。
    • 知识产权。配置设备以检查源或目标 IP 地址。
  8. 从“限定符”下拉列表中为表达式选择一个限定符。

    限定符下拉列表的内容取决于您选择的协议。下表描述了每个协议的可用选项。

    表 1. 缓存重定向策略限定符适用于每个协议

    协议 限定符 定义
    HTTP METHOD 请求中使用的 HTTP 方法。
    - URL URL 标头的内容。
    - URLTOKENS HTTP 标头中的 URL 令牌。
    - VERSION 连接的 HTTP 版本。
    - HEADER HTTP 请求的标头部分。
    - URLLEN URL 标头内容的长度。
    - URLQUERY URL 标头内容的查询部分。
    - URLQUERYLEN URL 标头查询部分的长度。
    SSL CLIENT.CERT SSL 客户端证书作为一个整体。
    - CLIENT.CERT.SUBJECT 客户端证书主题字段的内容。
    - CLIENT.CERT.ISSUER 客户端证书颁发者。
    - CLIENT.CERT.SIGALGO 客户端证书中使用的签名算法。
    - CLIENT.CERT.VERSION 客户端证书版本。
    - CLIENT.CERT.VALIDFROM 客户端证书的有效日期。(开始日期。)
    - CLIENT.CERT.VALIDTO 客户端证书不再有效的日期。(结束日期。)
    - CLIENT.CERT.SERIALNUMBER 客户端证书序列号。
    - CLIENT.CIPHER.TYPE 客户端证书中使用的加密方法。
    - CLIENT.CIPHER.BITS 加密密钥中的有效位数。
    - CLIENT.SSL.VERSION 客户端证书的 SSL 版本。
    TCP SOURCEPORT TCP 连接的源端口。
    - DESTPORT TCP 连接的目标端口。
    - MSS TCP 连接的最大段大小 (MSS)。
    IP SOURCEIP 连接的源 IP 地址。
    - DESTIP 连接的目标 IP 地址。
  9. 从“操作员”下拉列表中为表达式选择运算符。

    您的选择取决于您在上一步中选择的限定符。可以在此下拉列表中显示的完整运算符列表为:

    • == . 完全匹配以下文本字符串。
    • != . 与以下文本字符串不匹配。
    • . 大于以下整数。

    • CONTAINS。包含以下文本字符串。
    • CONTENTS。指定标头、URL 或 URL 查询的内容。
    • EXISTS。指定的标头或查询存在。
    • NOTCONTAINS。不包含以下文本字符串。
    • NOTEXISTS。指定的标头或查询不存在。

    如果您希望此策略对发送到特定主机的请求进行操作,则可以保留默认的 equals (==) 符号。

  10. 如果“值”文本框可见,请在文本框中键入相应的字符串或数字。

    例如,如果您希望此策略选择发送到主机 shopping.example.com 的请求,则可以在“值”文本框中键入该字符串。

  11. 如果选择 HATEL 作为限定符,请在“标题名称”文本框中键入所需的标题。

  12. 单击“确定”将表达式添加到“表达式”列表。

  13. 重复步骤 4 到 11 以创建其他表达式。

  14. 单击“关闭”以关闭“添加表达式”对话框,然后返回“创建缓存重定向策略”对话框。