HTTP 规则表达式构建器

通过使用 AND、OR、NOT 和括号进行分组,可以使用子表达式构建器,根据子表达式构建复杂的规则条件。应用更改时,规则构建器将对规则进行验证。如果找到未配对的括号以及不支持的逻辑运算符,那么将发出警报。

要查看此管理控制台页面,请单击服务器 > 服务器类型 > 随需应变路由器 > ODR > 随需应变路由器属性 > 路由策略 HTTP 规则 > 添加 > 子表达式构建器

要通过规则构建器修改规则,必须具有管理特权。

选择操作数

路由和服务策略操作数

根据所选协议的不同,将显示不同的操作数。下表包括了控制台中显示的操作数名称、表达式中出现的实际操作数、每个操作数的有效协议以及每个操作数的描述。

表 1. 操作数
请求变量 有效协议 描述
virtualhost

HTTP

SOAP

请求的虚拟主机目标,用来将 Web 应用程序配置到特定主机名。
virtualport

HTTP

请求的虚拟端口目标,用来将 Web 应用程序配置到特定端口。
uri

HTTP

统一资源标识。用于获取请求的路径。如果 URL 为“http://host:port/path?p1=v1”,那么路径为“path”。
用户标识   返回发送请求的已认证的用户的用户标识。
组标识   返回发送请求的已认证的用户的组名的列表。
请求查询参数名   头的名称或值。
例如,表达式 queryparm$timezone='EST' 测试请求以了解该请求是否包含名为 timezone 并且值为 EST 的 HTTP 查询参数。要测试查询参数是否存在,请使用下列其中一种格式:
queryparm$timezone IS NOT NULL 
queryparm$timezone IS NULL
请求头名称

头的名称或值。
例如,表达式 header$Host='localhost' 会测试请求以了解它是否包含值为 localhost 的 HTTP 主机头。要测试主机头是否存在,请使用下列其中一个表达式:
header$Host IS NOT NULL 
header$Host IS NULL
Cookie 头名称   cookie 名称。
例如,表达式 cookie$My_Cookie_Name='My_Cookie_Value' 会测试请求,以了解它是否包含名为 My_Cookie_Name 并且值为 My_Cookie_Value 的 cookie。要测试特定 cookie 是否存在,请使用下列其中一个表达式:
cookie$MyCookieName IS NOT NULL 
cookie$MyCookieName IS NULL
HTTPMethod

HTTP

SOAP

请求的 HTTP 方法。可能的值包括 POST、GET、PUT 和 DELETE。
clienthost

HTTP

SOAP

IIOP

SIP

标准客户机主机名。这是因特网协议(IP)命令主机名的值。此操作数支持 >、>=、< 和 <= 之类的数字运算符。
clientipv4

HTTP

SOAP

SIP

客户机的 IP 地址,使用因特网协议版本 4(IPv4)点分四段地址类型 n.n.n.n
clientipv6

HTTP

SOAP

SIP

因特网协议版本 6(IPv6)128 位地址类型 x:x:x:x:x:x:x:x,符合客户机的 Request for Comments 1924(RFC 1924)。
serverhost

HTTP

SOAP

IIOP

SIP

服务器的标准主机名。此操作数支持 >、>=、< 和 <= 之类的数字运算符。
serveripv4

HTTP

SOAP

SIP

服务器的 IP 地址,使用 IPv4 点分四段地址类型 n.n.n.n
serveripv6

HTTP

SOAP

SIP

IPv6 128 位地址类型 x:x:x:x:x:x:x:x,遵循服务器的 RFC 1924 协议。
port

HTTP

SOAP

IIOP

SIP

接收到请求的侦听端口。
protocol

HTTP

SOAP

传送请求的通信协议。当前支持的协议包括 HTTP、HTTPS、SOAP 和 SOAPS。
virtualportal

HTTP

SOAP

虚拟门户网站是在 WebSphere® Portal Server 中创建的,Intelligent Management 支持此操作数以便更好地与 WebSphere Portal Server 集成。虚拟门户网站是请求 URL 中除 WebSphere Portal 应用程序的 Web 模块上下文根以外的内容。如果给定的请求与所定义的虚拟门户网站匹配,那么将执行为该规则定义的路由操作。
time

HTTP

SOAP

IIOP

此操作数用于定义必须处理给定请求的当日的日期和时间。两个可选字段是 StartTime 和 EndTime。如果在该已定义窗口外接收到请求,那么不会处理该请求。

“开始时间和结束时间”字段都必须使用以下格式:dayOfWeek/dayOfMonth/month/year::hour:minute:second

例如,2007 年 4 月 11 日下午 1:03:45 指定为:

Thu/11/Apr/2007::13:03:45

任何字段都可使用值为 * 的通配符。例如,每个月的第一天指定为 */1。

dayofWeek 值为 Sun、Mon、Tue、Wed、Thu、Fri、Sat,而 dayOfMonth 值的范围是 1 到 31。

month 值是表示 12 个月的非数字值:Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec。

year 值由表示年份的四位数字组成。例如,2007。

hour 值是以 24 小时制表示的当天小时。例如,8am 表示为 ::8。minutesecond 是范围在 0 到 59 之间的整数。

正斜杠 (/) 用来分隔日期参数,双冒号 (::) 用来分隔日期和时间参数,冒号 (:) 用来分隔时间参数。请注意,由使用了 time 操作数的整个规则的布尔结果来确定要执行的路由操作。

percentage$<val>

HTTP

SOAP

IIOP

SIP

百分比操作数对时间的固定百分比求值为 true。例如,percentage$50 对时间的平均值 50% 求值为 true
rampup$<startTime>$<completionTime>

HTTP

SOAP

IIOP

SIP

rampup 操作数对时间的可变百分比求值为 true。它在 <startTime> 之前一直求值为 false,在 <completionTime> 之后一直求值为 true。从 <startTime><completionTime> 的时间内,它对线性增长的百分比求值为 true

<startTime><completionTime> 的格式为 day/month/year::hour:min:sec

其中 day 表示月份中的日期,month 表示月份(Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec),year 是用 4 位数字表示的年份,hour 是用 2 位数字表示的 24 小时制的小时,minsec 分别是用 2 位数字值表示的分钟和秒。

例如,

rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00 开始在 2007 年 1 月 1 日上午 8 点偶然求值为 true,并且在同一天的下午 5 点 ramp up 完成时一直求值为 true

运算符

  • 忽略大小写的等于 (EQUALSIGNORECASE):与 'String = String' 相同,但是会忽略字符的大小写。因此,'ABC' EQUALSIGNORECASE 'abc' 将求值为 true。('ABC' = 'abc') 求值为 false。
  • 不等于 ( <> ):“不等于”运算符表示操作数值与输入的值不相等。
  • 包含 (IN):此运算符表示在单个表达式中包含多个值的操作数。例如,对于名为 port 的操作数,如果要表示端口值可以是任何值或所有值,例如 908090909091,那么表达式片段为 port IN (9080,9090,9091)。括号中值的表示方式取决于端口的数据类型。如果端口是整数,那么正确的语法是一些不带引号的值。如果端口是字符串,那么正确的语法是 port IN ('9080', '9090', '9091')
  • 模式匹配 (LIKE):此运算符表示对字符串操作数值进行模式匹配。在模式匹配的开始位置,值必须包含百分号通配符(%)。例如,表达式 host LIKE %blanca 表示与单词 blanca 或者任何其他以 blanca 结尾的单词匹配;表达式 host LIKE blanca% 表示与单词 blanca 或者任何其他以 blanca 开头的单词匹配;表达式 host LIKE %blanca% 表示与单词 blanca 或者任何嵌入了 blanca 的单词匹配。
  • 忽略大小写的模式匹配 (LIKEIGNORECASE):与 'string like string' 相同,但是会忽略字符串的大小写。
  • 不为 Null (IS NOT NULL):此运算符表示查询验证结果表明所请求的参数存在。
  • 连接 (+):此运算符表示连接两个字符串:'abc' + 'def' ='abcdef'。
  • 模式匹配包含 (LIKEIN):当“likein”左边的字符串与一个或多个字符串 (stringN) 匹配时,此运算符表示 string likein (string1, string2, string3, etc.) 求值为 true。
  • 为 Null (IS NULL):此运算符表示查询验证结果表明所请求的参数不存在。
  • 等于 ( = )::“等于”运算符表示以区分大小写方式进行匹配。

根据所选运算符的不同,输入要创建的子表达式的值。

生成子表达式

根据已指定的操作数、运算符和值,生成子表达式。

追加

单击以追加至规则面板上的框。



文件名:http_rulebuilder_detail.html