Load Balancing 规则使用两种表达式:
-
简单表达式将 HTTP 请求中的值与表达式中定义的值进行比较。简单表达式通过存在比较运算符(例如 equals 或 less than)来识别。
-
复合表达式将两个或多个简单表达式组合成单个表达式。复合表达式包含逻辑运算符(例如 and、or)。使用复合表达式,您可以高精度地为特定用例定制规则。
简单表达式由三个元素组成:
- 表示 HTTP 请求属性的字段。
- 该字段的值,Cloudflare 将其与实际请求值进行比较。
- 比较运算符,指定表达式中定义的值必须与实际请求值如何关联,运算符才返回
true。
当比较运算符返回 true 时,请求匹配表达式。
此示例表达式在请求 URI 路径包含 /content 时返回 true:
(http.request.uri.path contains "/content")一般来说,简单表达式使用此模式:
<field> <operator> <value>有关更多详情,请参阅支持的字段和运算符。
复合表达式使用逻辑运算符(例如 and、or)组合两个或多个表达式。复合表达式允许您在单个表达式中构建复杂语句。
下面的示例表达式在 HTTP 请求 URI 路径包含 /content 且查询字符串包含 webserver 时返回 true:
(http.request.uri.path contains "/content")
and (http.request.uri.query contains "webserver")一般来说,复合表达式使用此模式:
<expression> <logical operator> <expression>复合表达式可以是逻辑运算符的操作数。这允许多个运算符从许多单个表达式构建复合表达式。
有关更多详情,请参阅支持的字段和运算符。
Expression Builder 的可视界面允许您构建表达式,而无需担心字段名称和语法。
相比之下,Expression Editor 是纯文本的,但支持 Builder 中不可用的高级功能。
复合表达式在 Expression Builder 的可视界面中显示时更易于浏览,Expression Preview 是学习编写更高级表达式的绝佳参考。
此 Expression Builder 截图显示了前面描述的示例复合表达式。复合表达式在 Expression Builder 的可视界面中显示时更易于浏览。
Expression Preview(表达式预览) 以文本形式显示表达式:
(http.request.uri.path contains "/content")
and (http.request.uri.query contains "webserver")有关演练,请参阅创建 Load Balancing 规则。
Expression Editor 是用于创建 Load Balancing 表达式的纯文本界面。虽然它缺乏 Expression Builder 的视觉简洁性,但 Expression Editor 支持高级功能,如对分组符号(括号)的支持。
要在 Traffic(流量) 应用中访问 Expression Editor,请在 Create Custom Rule(创建自定义规则) 对话框中点击 Edit expression(编辑表达式)。
要返回 Builder,点击 Use expression builder(使用表达式构建器)。
Load Balancing Custom Rules 不支持 IP list 运算符。