-
-
-
-
高级策略表达式的基本元素
-
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
高级策略表达式的基本元素
高级策略表达式至少由一个前缀(或用来代替前缀的单个元素)组成。大多数表达式还指定要对前缀标识的数据执行的操作。您可以按如下方式格式化最多 1,499 个字符的表达式:
<prefix>.<operation> [<compound-operator> <prefix>.<operation>. . .]
其中
-
<prefix>
是开始表达式的锚点。
前缀是用句点分隔的密钥,用于标识数据单元。例如,以下前缀检查 HTTP 请求中是否存在名为 Content-Type 的标头:
http.req.header(“Content-Type”)
前缀也可以单独用于返回前缀标识的对象的值。
-
<operation>
确定要对由前缀标识的数据执行的评估。
例如,考虑以下表达式:
http.req.header(“Content-Type”).eq(“text/html”)
在此表达式中,以下是运算符组件:
eq(“text/html”)
此运算符使 NetScaler 评估包含内容类型标头的任何 HTTP 请求,特别是确定此标头的值是否等于字符串“text/html”。有关更多信息,请参阅“操作。“
-
<compound-operator>
是一个布尔运算符或算术运算符,它由多个前缀或前缀.operation元素构成复合表达式。
例如,考虑以下表达式:
http.req.header(“Content-Type”).eq(“text/html”) && http.req.url.contains(“.html”)
前缀
表达式前缀表示一段离散的数据。例如,表达式前缀可以表示 HTTP URL、HTTP Cookie 标头或 HTTP POST 请求正文中的字符串。表达式前缀可以识别和返回各种数据类型,包括以下类型:
- TCP/IP 数据包中的客户端 IP 地址
- NetScaler 系统时间
- 通过 HTTP 进行外部调用
- TCP 或 UDP 记录类型
在大多数情况下,表达式前缀以以下关键字之一开头:
- CLIENT:
- 识别发送请求或接收响应的客户端的特征,如以下示例所示:
- 前缀 client.ip.dst 表示请求或响应中的目标 IP 地址。
- 前缀 client.ip.src 表示源 IP 地址。
- HTTP:
- 标识 HTTP 请求或响应中的元素,如以下示例所示:
- 前缀 http.req.body(整数)将 HTTP 请求的主体指定为多行文本对象,直至指定为整数的字符位置。
- 前缀 http.req.header(“header_name”) 指定 HTTP 标头,如 header_name 中指定的。
- 前缀 http.req.url 指定 URL 编码格式的 HTTP URL。
-
SERVER:
标识服务器中正在处理请求或发送响应的元素。
-
SYS:
识别正在处理流量的 NetScaler 的特征。
注意: 请注意,DNS 策略仅支持 SYS、客户端和服务器对象。
此外,在 NetScaler Gateway 中,无客户端 VPN 功能可以使用以下类型的前缀:
-
TEXT:
识别请求或响应中的任何文本元素。
-
TARGET:
识别连接的目标。
-
URL;
识别 HTTP 请求或响应的 URL 部分中的元素。
一般的经验法则,任何表达式前缀都可以是自包含的表达式。例如,以下前缀是一个完整的表达式,它返回字符串参数中指定的 HTTP 标头的内容(用引号括起来):
http.res.header.("myheader")
或者,您可以将前缀与简单操作相结合来确定 TRUE 和 FALSE 值。例如,以下内容返回 TRUE 或 FALSE 的值:
http.res.header.("myheader").exists
您还可以对表达式中的单个前缀和多个前缀使用复杂的运算,如以下示例所示:
http.req.url.length + http.req.cookie.length <= 500
您可以指定哪个表达式前缀取决于 NetScaler 功能。下表描述了每个功能中感兴趣的表达式前缀
功能 | 功能中使用的表达式前缀类型 |
---|---|
DNS | SYS、CLIENT、SERVER |
保护功能中的响应者 | HTTP、SYS、CLIENT |
内容交换 | HTTP、SYS、CLIENT |
重写 | HTTP、SYS、CLIENT、SERVER、URL、TEXT、TARGET、VPN |
集成缓存 | HTTP、SYS、CLIENT、SERVER |
NetScaler Gateway,无客户端接入 | HTTP、SYS、CLIENT、SERVER、URL、TEXT、TARGET、VPN |
表 1. 各种 NetScaler 功能中允许的表达式前缀类型
注意: 有关功能中允许的表达式前缀的详细信息,请参阅该功能的文档。
单元素表达式
最简单的高级策略表达式包含单个元素。此元素可以是以下元素之一:
- true。高级策略表达式可以简单地包含 true 的值。这种类型的表达式总是返回 TRUE 的值。它对于链接策略操作和触发 Goto 表达式很有用。
- 假的。高级策略表达式可以只包含值 false。这种类型的表达式总是返回值 FALSE。
- 复合表达式的前缀。例如,前缀 HTTP.REQ.HOSTNAME 是返回主机名的完整表达式,而 HTTP.REQ.URL 是返回 URL 的完整表达式。该前缀也可以与运算和其他前缀结合使用以形成复合表达式。
operations
在大多数表达式中,您还可以指定对前缀标识的数据的操作。例如,假设您指定了以下前缀:
http.req.url
此前缀提取 HTTP 请求中的 URL。此表达式前缀不需要在表达式中使用任何运算符。但是,当您配置处理 HTTP 请求 URL 的表达式时,可以指定分析 URL 特定特征的操作。以下是几种可能性:
- 在 URL 中搜索特定的主机名。
- 在 URL 中搜索特定路径。
- 评估 URL 的长度。
- 在 URL 中搜索表示时间戳的字符串并将其转换为 GMT。
以下是标识名为 Server 的 HTTP 标头的前缀和在标头值中搜索字符串 IIS 的操作的示例:
http.res.header("Server").contains("IIS")
以下是标识主机名的前缀和搜索字符串“www.mycompany.com”作为名称值的操作的示例:
http.req.hostname.eq("www.mycompany.com")
表达式前缀的基本操作
下表描述了可以对表达式前缀执行的一些基本操作。
操作 | 决定是否 |
---|---|
CONTAINS( |
该对象匹配 |
EXISTS | 特定项目存在于对象中。以下是示例:http.res.header(“MyHdr”).exists |
EQ( |
对象中存在特定的非数字值。以下是示例:http.req.method.eq(post) |
EQ( |
对象中存在特定的数值。以下是示例:client.ip.dst.eq(10.100.10.100) |
LT( |
对象的值小于特定值。以下是示例: http.req.content_length.lt(5000) |
GT( |
对象的值大于特定值。以下是示例:http.req.content_length.gt(5) |
下表总结了几种可用的操作类型。
操作类型 | 说明 |
---|---|
文本操作 | 将单个字符串和字符串集与目标的任何部分进行匹配。目标可以是整个字符串、字符串的开头或字符串开头和结尾之间的任何文本部分。例如,您可以从“xyzsomeText”中提取字符串“XYZ”。或者,您可以将 HTTP 标头值与由不同字符串组成的数组进行比较。您也可以将文本转换为另一种类型的数据。以下是示例:将字符串转换为整数值,从 URL 中的查询字符串创建列表,并将字符串转换为时间值。 |
数字运算 | 数值运算包括应用算术运算符、评估内容长度、列表中的项目数、日期、时间和 IP 地址。 |
共享
共享
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.