Load Balancing expressions
Load Balancing rules use two kinds of expressions:
Simple expressions compare a value from an HTTP request to a value defined in the expression. A simple expression is identified by the presence of a comparison operator (equals or less than, for example).
Compound expressions combine two or more simple expressions into a single expression. Compound expression contains a logical operator (and, or, for example). With compound expressions you can tailor rules to specific use cases with a high degree of accuracy and precision.
Simple expressions
Simple expressions are composed of three elements:
- A field that represents a property of an HTTP request.
- A representative value for that field which Cloudflare compares to the actual request value.
- A comparison operator, which specifies how the value defined in the expression must relate to the actual value from the request for the operator to return
true
.
When the comparison operator returns true
, the request matches the expression.
This example expression returns true when a request URI path contains /content
:
(http.request.uri.path contains "/content")
In general, simple expressions use this pattern:
<field> <operator> <value>
For more details, refer to Supported fields and operators.
Compound expressions
A compound expression uses a logical operator (and, or, for example) to combine two or more expressions. Compound expressions allow you to build complex statements within a single expression.
The example expression below returns true when both the HTTP request URI path contains /content
and the query string contains webserver
:
(http.request.uri.path contains "/content")
and (http.request.uri.query contains "webserver")
In general, compound expressions use this pattern:
<expression> <logical operator> <expression>
A compound expression can be an operand of a logical operator. This allows multiple operators to construct a compound expression from many individual expressions.
For more details, refer to Supported fields and operators.
Working with expressions
The Expression Builder’s visual interface allows you to build expressions without worrying about field names and syntax.
By comparison, the Expression Editor is text only, but it supports advanced features not available in the builder.
Expression Builder
Compound expressions are easier to scan when displayed in the Expression Builder’s visual interface, and the Expression Preview is a great reference for learning to write more advanced expressions.
This Expression Builder screenshot shows the example compound expression described earlier. Compound expressions are easier to scan when displayed in the Expression Builder’s visual interface.
The Expression Preview displays the expression in text:
(http.request.uri.path contains "/content")
and (http.request.uri.query contains "webserver")
For a walkthrough, refer to Creating Load Balancing rules.
Expression Editor
The Expression Editor is a text-only interface for creating Load Balancing expressions. Although it lacks the visual simplicity of the Expression Builder, the Expression Editor supports advanced features such as support for grouping symbols (parentheses).
To access the Expression Editor in the Traffic app, click Edit expression in the Create Custom Rule dialog.
To return to the builder, click Use expression builder.
Rules lists
Load Balancing Custom Rules does not support IP list operators.