配置缓存重定向策略
缓存重定向策略包含一个或多个表达式(也称为 规则)。每个表达式都表示在将客户端请求与策略进行比较时评估的条件。
您不显式配置缓存重定向策略的操作。默认情况下,Citrix ADC 设备将任何与策略匹配的请求视为不可缓存,并将请求定向到源服务器而不是缓存。
基于经典策略格式的缓存重定向策略称为经典缓存重定向策略。每个此类策略都有一个名称,包括一个经典表达式或一组经典表达式,这些表达式通过使用逻辑运算符进行组合。
对于传统的缓存重定向策略,您不显式配置策略的操作。默认情况下,Citrix ADC 设备将任何与策略匹配的请求视为不可缓存,并将请求定向到源服务器而不是缓存。
基于较新策略格式的缓存重定向策略称为 高级重定向策略。此类策略具有一个名称,包括默认语法表达式或一组默认语法表达式(通过使用逻辑运算符组合)以及以下内置操作:
- CACHE
- ORIGIN
有关经典表达式和默认语法表达式的详细信息,请参阅 策略和表达式。
使用 CLI 添加缓存重定向策略
在命令提示符处,键入以下命令以添加缓存重定向策略并验证配置:
- add cr policy <policyName> \*\*-rule\*\* <expression>
- show cr policy [<policyName>]
<!--NeedCopy-->
示例:
具有简单表达式的策略:
> 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
<!--NeedCopy-->
具有复合表达式的策略:
> 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
<!--NeedCopy-->
评估标头的策略:
> 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
<!--NeedCopy-->
使用 CLI 添加默认语法缓存重定向策略
在命令提示符处,键入以下命令以添加缓存重定向策略并验证配置:
- add cr policy <policyName> \*\*-rule\*\* <expression> [-action<string>] [-logAction<string>]
- show cr policy [<policyName>]
<!--NeedCopy-->
示例:
具有简单表达式的策略:
> 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
<!--NeedCopy-->
具有复合表达式的策略:
> 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
<!--NeedCopy-->
评估标头的策略:
> 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
<!--NeedCopy-->
使用 CLI 修改或删除缓存重定向策略
- 要修改缓存重定向策略,请使用 set cr 策略命令,这就像添加 cr 策略命令一样,只是输入现有策略的名称。
- 要删除策略,请使用仅接受 <name> 参数的
rm cr policy
命令。如果策略绑定到虚拟服务器,则必须先取消绑定该策略,然后才能将其删除。
有关解除绑定缓存重定向策略的详细信息,请参 阅从缓存重定向虚拟服务器取消绑定策略。
使用 GUI 配置一个简单表达式的缓存重定向策略
-
导航到流量管理 > 缓存重定向 > 策略。
-
在详细信息窗格中,单击 Add(添加)。
-
在“创建缓存重定向策略”对话框的“名称 *”文本框中,键入策略的名称,然后在“表达式”区域中,单击“添加”。
-
要配置简单表达式,请输入表达式。以下是检查 URL 中的 .jpeg 扩展名的表达式示例:
- 表达式类型
- 流量类型-REQ
- 通信协议
- 限定符-URL
- 操作员-! =
- 值-/.jpeg
以下示例中的简单表达式检查请求中的 If-Modiied-Ii 标头:
- 表达式类型
- 流量类型-REQ
- 通信协议
- 限定符标题
- 运算符-存在
- 标题名称-如果已修改-自
-
完成输入表达式后,单击确定或创建,然后单击关闭。
使用 GUI 配置具有复合表达式的缓存重定向策略
-
导航到流量管理 > 缓存重定向 > 策略。
-
在详细信息窗格中,单击 Add(添加)。
-
在“名称”文本框中,输入策略的名称。
名称可以以字母、数字或下划线符号开头,可以由一到 127 个字母、数字和连字符 (-)、句点 (#)、空格 ()、位于 (@)、等于 (=) 和下划线 (_) 符号组成。您应该选择一个名称,使其他人能够轻松告诉创建此策略要检测的内容类型。
-
选择要创建的复合表达式的类型。选项包括:
-
匹配任何表达式。如果一个或多个单独的表达式与流量匹配,策略将匹配流量。
-
匹配所有表达式。仅当每个表达式都匹配流量时,策略才匹配流量。
-
表格表达式。将“表达式”列表切换为具有三列的表格格式。在最右侧的列中,放置以下运算符之一:
- AND [ && ] 运算符为了要求匹配策略,请求必须同时匹配当前表达式和以下表达式。
-
要使用 OR [
您还可以通过选择现有表达式并单击以下运算符之一,将表达式分组到嵌套子组中:
- BEGIN SUBGROUP [+( ] 运算符,它告诉 Citrix ADC 设备使用所选表达式开始嵌套子组。(要从表达式中删除此运算符,请单击-(.)
- END SUBGROUP [+) ] 运算符,它告诉 Citrix ADC 设备使用所选表达式结束当前嵌套的子组。(要从表达式中删除此运算符,请单击-)。)
-
高级自由表单。完全关闭表达式编辑器,并将表达式列表转换为可在其中键入复合表达式的文本区域。这是创建策略表达式的最强大和最困难的方法,仅建议熟悉 Citrix ADC 经典表达式语言的用户使用。
有关在高级自由格式文本区域中创建经典表达式的详细信息,请参阅 配置经典策略和表达式。
注意: 如果切换到高级自由表单表达式编辑模式,则无法切换回任何其他模式。除非您确定要使用此表达式编辑模式,否则请勿选择此表达式编辑模式。
-
-
如果选择“匹配任意表达式”、“匹配所有表达式”或“表格表达式”,请单击“添加”以显示“添加表达式”对话框。
对于缓存重定向策略,您应将表达式类型设置为常规。
-
在“流量类型”下拉列表中,为表达式选择流量类型。
流类型决定策略是检查传入连接还是传出连接。您有两个选择:
- REQ。配置 Citrix ADC 设备以检查传入连接或请求。
- RES。配置设备以检查传出连接或响应。
-
在“协议”下拉列表中,为表达式选择一个协议。
协议确定策略在请求或响应中检查的信息类型。根据您在上一个下拉列表中选择 REQ 还是 RES,以下所有四个选项都可用,还是只有三个选项可用:
- HTTP。配置设备以检查 HTTP 标头。
- SSL。配置设备以检查 SSL 客户端证书。仅当您在上一个下拉列表中选择 REQ(请求)时才可用。
- TCP。配置设备以检查 TCP 标头。
- IP。配置设备以检查源或目标 IP 地址。
-
从“限定符”下拉列表中为表达式选择一个限定符。
限定符下拉列表的内容取决于您选择的协议。下表描述了每个协议的可用选项。
表 1. 缓存重定向策略限定符适用于每个协议
协议 限定符 定义 HTTP METHOD 请求中使用的 HTTP 方法。 - URL URL 标头的内容。 - URLTOKENS HTTP 标头中的 URL 令牌。 - 版本 连接的 HTTP 版本。 - HEADER HTTP 请求的标头部分。 - URLLEN URL 标头内容的长度。 - URLQUERY URL 标头内容的查询部分。 - URLQUERYLEN URL 标头查询部分的长度。 SSL 客户端 .CERT SSL 客户端证书作为一个整体。 - 客户端 .CER.主题 客户端证书主题字段的内容。 - 客户端 .CER.发行人 客户端证书颁发者。 - 客户端 .CER.SIGALGO 客户端证书中使用的签名算法。 - 客户端 .CER.版本 客户端证书版本。 - 客户端 .CER.有效来自 客户端证书的有效日期。(开始日期。) - 客户端 .CER.有效 客户端证书不再有效的日期。(结束日期。) - 客户端 .CER.序列号 客户端证书序列号。 - 客户端密码类型 客户端证书中使用的加密方法。 - 客户端 .密码 .BIT 加密密钥中的有效位数。 - CLIENT.SSL.VERSION 客户端证书的 SSL 版本。 TCP SOURCEPORT TCP 连接的源端口。 - DESTPORT TCP 连接的目标端口。 - MSS TCP 连接的最大段大小 (MSS)。 IP 来源地 连接的源 IP 地址。 - DESTIP 连接的目标 IP 地址。 -
从“操作员”下拉列表中为表达式选择运算符。
您的选择取决于您在上一步中选择的限定符。可以在此下拉列表中显示的完整运算符列表为:
- == . 完全匹配以下文本字符串。
- != . 与以下文本字符串不匹配。
-
. 大于以下整数。
- CONTAINS。包含以下文本字符串。
- CONTENTS。指定标头、URL 或 URL 查询的内容。
- EXISTS。指定的标头或查询存在。
- NOTCONTAINS。不包含以下文本字符串。
- NOTEXISTS。指定的标头或查询不存在。
如果您希望此策略对发送到特定主机的请求进行操作,则可以保留默认的 equals (==) 符号。
-
如果“值”文本框可见,请在文本框中键入相应的字符串或数字。
例如,如果您希望此策略选择发送到主机 shopping.example.com 的请求,则可以在“值”文本框中键入该字符串。
-
如果选择 HATEL 作为限定符,请在“标题名称”文本框中键入所需的标题。
-
单击“确定”将表达式添加到“表达式”列表。
-
重复步骤 4 到 11 以创建其他表达式。
-
单击“关闭”以关闭“添加表达式”对话框,然后返回“创建缓存重定向策略”对话框。