配置缓存重定向策略
缓存重定向策略包括表达式(也称为 规则)。表达式表示将客户端请求与策略进行比较时评估的条件。
您没有明确配置缓存重定向策略的操作。
缓存重定向策略有一个名称,包括一个高级策略表达式或一组通过使用逻辑运算符组合的高级策略表达式子句,以及以下内置操作:
- 缓存
- ORIGIN
有关高级策略表达式的详细信息,请参阅 策略和表达式。
使用 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
Hits: 0
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
Hits: 0
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
Hits: 0
Done
<!--NeedCopy-->
使用 CLI 修改或删除缓存重定向策略
- 要修改缓存重定向策略,请使用 set cr policy 命令,这与添加 cr policy 命令一样,只需输入现有策略的名称,而且只需提供要修改的参数即可。
- 要删除策略,请使用
rm cr policy
命令,该命令仅接受 <name> 参数。如果策略绑定到虚拟服务器,则必须先取消绑定该策略,然后才能将其删除。
有关解除绑定缓存重定向策略的详细信息,请参 阅从缓存重定向虚拟服务器取消绑定策略。
使用 GUI 配置一个简单表达式的缓存重定向策略
-
导航到 流量管理 > 缓存重定向 > 策略。
-
在详细信息窗格中,单击“添加”。
- 在“创建缓存重定向策略”对话框的“名称”文本框中,键入策略的名称。
- 从操作下拉列表中选择适当的 操作CACHE或ORIGIN 。
- 在“日志操作”区域中,单击“添加”。在“创建审计消息操作”对话框中键入名称。
-
通过从下拉列表中选择适当的值来配置 日志级别 :
- 紧急情况
- 警报
- 关键的
- 错误
- 警告
- 注意
- 信息
- 调试
- 在“表达式”区域中输入 表达式 。
- 表达式类型一般
- 流量类型-REQ
- 协议-HTTP
- 限定符-URL
- 操作员-!=
- 值-/.jpeg
- 单击创建。
-
-
要配置简单表达式,请输入表达式。以下是检查 URL 中
.jpeg
扩展名的表达式示例:- 表达式类型一般
- 流量类型-REQ
- 协议-HTTP
- 限定符-URL
- 操作员-!=
- 值-/.jpeg
以下示例中的简单表达式检查请求中是否有 Id-Modified-Since 标头:
- 表达式类型一般
- 流量类型-REQ
- 协议-HTTP
- 预选赛-标题
- 运算符-EXISTS
- 标题名称-If-Fodified-Since
- 输入完表达式后,单击 创建。
使用 GUI 使用复合表达式配置缓存重定向策略
-
导航到 流量管理 > 缓存重定向 > 策略。
-
在详细信息窗格中,单击“添加”。
-
在名 称 文本框中,输入策略的名称。
名称可以以字母、数字或下划线符号开头,可以由 1 到 127 个字母、数字和连字符 (-)、句点 (.) 磅 (#)、空格 ()、at (@)、等于 (=) 和下划线 (_) 符号组成。您应该选择一个名称,以便其他人能够轻松分辨创建此策略要检测的内容类型。
- 从操作下拉列表中选择适当的 操作CACHE或ORIGIN 。
- 在“日志操作”区域中,单击“添加”。在“创建审计消息操作”对话框中键入名称。
-
通过从下拉列表中选择适当的值来配置 日志级别 :
- 紧急情况
- 警报
- 关键的
- 错误
- 警告
- 注意
- 信息
- 调试
- 在“表达式”区域中输入 表达式 。
- 表达式类型一般
- 流量类型-REQ
- 协议-HTTP
- 限定符-URL
- 操作员-!=
- 值-/.jpeg
- 单击创建。
-
-
选择要创建的复合表达式的类型。选项包括:
-
匹配任何表达式。如果一个或多个单独的表达式与流量匹配,则策略将匹配流量。
-
匹配所有表达式。只有当每个表达式都与流量匹配时,策略才会匹配流量。
-
表格表达式。将表达式列表切换为包含三列的表格格式。在最右侧的列中,放置以下运算符之一:
- AND [&&] 运算符要求,要匹配策略,请求必须同时匹配当前表达式和以下表达式。
- OR [||] 运算符,要要求匹配策略,请求必须匹配当前表达式或以下表达式,或者同时匹配两者。只有当请求不匹配任何一个表达式时,它才会与策略不匹配。
您还可以通过选择现有表达式并单击以下运算符之一,将表达式分组到嵌套子组中:
- BEGIN SUBGROUP [+ (] 运算符,它告诉 NetScaler 设备使用所选表达式开始嵌套子组。(要从表达式中删除此运算符,请单击-(.)
- END SUBGROUP [+)] 运算符,它告诉 NetScaler 设备使用所选表达式结束当前的嵌套子组。(要从表达式中删除此运算符,请单击-)。)
-
高级自由格式。完全关闭“表达式编辑器”,然后将“表达式”列表变成可在其中键入复合表达式的文本区域。这既是创建策略表达式的最强大方法,也是最困难的方法,仅建议那些完全熟悉 NetScaler 经典表达式语言的人使用。
有关在高级自由格式文本区域中创建经典表达式的详细信息,请参阅 配置经典策略和表达式。
注意: 如果切换到高级自由表单表达式编辑模式,则无法切换回任何其他模式。除非确定要使用此表达式编辑模式,否则不要选择此表达式编辑模式。
-
-
如果选择了“匹配任意表达式”、“匹配所有表达式”或“表格表达式”,则单击“添 加”以显示“添加表达式”
对于缓存重定向策略,您应将表达式类型设置为常规。
-
在 Flow Type 下拉列表中,为表达式选择流程类型。
流量类型确定策略是检查传入连接还是传出连接。您有两个选择:
- REQ。配置 NetScaler 设备以检查传入的连接或请求。
- RES。配置设备以检查传出连接或响应。
-
在协议下拉列表中,为表达式选择一个协议。
协议确定策略在请求或响应中检查的信息类型。根据您在上一个下拉列表中选择的是 REQ 还是 RES,可以使用以下全部四个或仅三个选项:
- HTTP。配置设备以检查 HTTP 标头。
- SSL。配置设备以检查 SSL 客户端证书。仅当您在上一个下拉列表中选择了 REQ(请求)时才可用。
- TCP。配置设备以检查 TCP 标头。
- IP。配置设备以检查源 IP 地址或目标 IP 地址。
-
从“限定符”下拉列表中为表达式选择一个限定符。
限定符下拉列表的内容取决于您选择的协议。下表介绍了每种协议的可用选项。
表 1. 每个协议都可用的缓存重定向策略限定符
协议 预选赛 定义 HTTP METHOD 请求中使用的 HTTP 方法。 - URL URL 标头的内容。 - URLTOKEN HTTP 标头中的 URL 令牌。 - 版本 连接的 HTTP 版本。 - 标题 HTTP 请求的标头部分。 - URLLEN URL 标头内容的长度。 - URLQUERY 查询 URL 标头内容的一部分。 - URLQUERYLEN URL 标头的查询部分的长度。 SSL CLIENT.CERT SSL 客户端证书作为一个整体。 - CLIENT.CERT.JECT.TIENT 客户端证书主题字段的内容。 - CLIENT.CERT.发行者 客户端证书颁发者。 - CLIENT.CERT.SIGALGO 客户端证书中使用的签名算法。 - CLIENT.CERT.VERSION 客户端证书版本。 - CLIENT.CERT 有效期自 客户端证书的有效日期。(开始日期。) - CLIENT.CERT.VALIDDO 客户端证书不再有效的日期。(结束日期。) - CLIENT.CERT.序列号 客户端证书序列号。 - CLIENT.CIPHER.TYPE 客户端证书中使用的加密方法。 - CLIENT.CIPHER.BITS 加密密钥中的有效位数。 - CLIENT.SSL.VERSION 客户端证书的 SSL 版本。 TCP 源端口/港口 TCP 连接的源端口。 - 德斯波特 TCP 连接的目标端口。 - MSS TCP 连接的最大分段大小 (MSS)。 IP 源码/IP 连接的源 IP 地址。 - DESTIP 连接的目标 IP 地址。 -
从“运算符”下拉列表中为表达式选择运算符。
您的选择取决于您在上一步中选择的限定词。可以在此下拉列表中显示的运算符的完整列表是:
- == . 完全匹配以下文本字符串。
- != . 与以下文本字符串不匹配。
-
. 大于以下整数。
- 包含。包含以下文本字符串。
- 内容。指定标头、URL 或 URL 查询的内容。
- 存在。指定的标头或查询存在。
- 不包含。不包含以下文本字符串。
- 不存在。指定的标头或查询不存在。
如果您希望此策略对发送到特定主机的请求运行,则可以保留默认值等于 (==) 符号。
-
如果值文本框可见,请在文本框中键入相应的字符串或数字。
例如,如果您希望此策略选择发送到主机 shopping.example.com 的请求,则可以在“值”文本框中键入该字符串。
-
如果选择 HEADER 作为限定词,请在“标题名称”文本框中键入所需的标题。
-
单击 确定 将表达式添加到表达式列表中。
-
重复步骤 4 到 11 以创建更多表达式。
- 单击“关闭”关闭“添加表达式”对话框,然后返回到“创建缓存重定向策略”对话框。
- 输入完表达式后,单击 创建。