Match conditions in the Standard rules engine for Azure Content Delivery Network

Important

Azure CDN Standard from Microsoft (classic) will be retired on September 30, 2027. To avoid any service disruption, it is important that you migrate your Azure CDN Standard from Microsoft (classic) profiles to Azure Front Door Standard or Premium tier by September 30, 2027. For more information, see Azure CDN Standard from Microsoft (classic) retirement.

Azure CDN from Edgio will be retired on Januray 15, 2025. You must migrate your workload to Azure Front Door before this date to avoid service disruption. For more information, see Azure CDN from Edgio retirement FAQ.

In the Standard rules engine for Azure Content Delivery Network, a rule consists of one or more match conditions and an action. This article provides detailed descriptions of the match conditions you can use in the Standard rules engine for Azure Content Delivery Network.

The first part of a rule is a match condition or set of match conditions. In the Standard rules engine for Azure Content Delivery Network, each rule can have up to four match conditions. A match condition identifies specific types of requests for which defined actions are performed. If you use multiple match conditions, the match conditions are grouped together by using AND logic.

For example, you can use a match condition to:

  • Filter requests based on a specific IP address or country/region.
  • Filter requests by header information.
  • Filter requests from mobile devices or desktop devices.

Match conditions

The following match conditions are available to use in the Standard rules engine for Azure Content Delivery Network.

Device type

Identifies requests made from a mobile device or desktop device.

Required fields

Operator Supported values
Equals, Not equals Mobile, Desktop

HTTP version

Identifies requests based on the HTTP version of the request.

Required fields

Operator Supported values
Equals, Not equals 2.0, 1.1, 1.0, 0.9, All

Request cookies

Identifies requests based on cookie information in the incoming request.

Required fields

Cookie name Operator Cookie value Case transform
String Standard operator list String, Int No transform, to uppercase, to lowercase

Key information

  • You can't use wildcard values (including asterisks (*)) when you specify a cookie name; you must use an exact cookie name.
  • You can specify only a single cookie name per instance of this match condition.
  • Cookie name comparisons are case-insensitive.
  • To specify multiple cookie values, use a single space between each cookie value.
  • Cookie values can take advantage of wildcard values.
  • If a wildcard value hasn't been specified, only an exact match satisfies this match condition. For example, "Value" matches "Value" but not "Value1".

Post argument

Identifies requests based on arguments defined for the POST request method that's used in the request.

Required fields

Argument name Operator Argument value Case transform
String Standard operator list String, Int No transform, to uppercase, to lowercase

Query string

Identifies requests that contain a specific query string parameter. This parameter is set to a value that matches a specific pattern. Query string parameters (for example, parameter=value) in the request URL determine whether this condition is met. This match condition identifies a query string parameter by its name and accepts one or more values for the parameter value.

Required fields

Operator Query string Case Transform
Standard operator list String, Int No transform, to uppercase, to lowercase

Remote address

Identifies requests based on the requester's location or IP address.

Required fields

Operator Supported values
Any N/A
Geo Match Country code
IP Match IP address (space-separated)
Not Any N/A
Not Geo Match Country code
Not IP Match IP address (space-separated)

Key information

  • Use classless inter-domain routing (CIDR) notation.
  • To specify multiple IP addresses and IP address blocks, use a single space between the values:
    • IPv4 example: 1.2.3.4 10.20.30.40 matches any requests that arrive from either address 1.2.3.4 or 10.20.30.40.
    • IPv6 example: 1:2:3:4:5:6:7:8 10:20:30:40:50:60:70:80 matches any requests that arrive from either address 1:2:3:4:5:6:7:8 or 10:20:30:40:50:60:70:80.
  • The syntax for an IP address block is the base IP address followed by a forward slash and the prefix size. For example:
    • IPv4 example: 5.5.5.64/26 matches any requests that arrive from addresses 5.5.5.64 through 5.5.5.127.
    • IPv6 example: 1:2:3:/48 matches any requests that arrive from addresses 1:2:3:0:0:0:0:0 through 1:2:3:ffff:ffff:ffff:ffff:ffff.
  • Remote Address represents the original client IP that is either from the network connection or typically the X-Forwarded-For request header if the user is behind a proxy.

Request body

Identifies requests based on specific text that appears in the body of the request.

Required fields

Operator Request body Case transform
Standard operator list String, Int No transform, to uppercase, to lowercase

Request header

Identifies requests that use a specific header in the request.

Required fields

Header name Operator Header value Case transform
String Standard operator list String, Int No transform, to uppercase, to lowercase

Request method

Identifies requests that use the specified request method.

Required fields

Operator Supported values
Equals, Not equals GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE

Key information

  • Only the GET request method can generate cached content in Azure Content Delivery Network. All other request methods are proxied through the network.

Request protocol

Identifies requests that use the specified protocol used.

Required fields

Operator Supported values
Equals, Not equals HTTP, HTTPS

Request URL

Identifies requests that match the specified URL.

Required fields

Operator Request URL Case transform
Standard operator list String, Int No transform, to uppercase, to lowercase

Key information

  • When you use this rule condition, be sure to include protocol information. For example: https://www.<yourdomain>.com.

URL file extension

Identifies requests that include the specified file extension in the file name in the requesting URL.

Required fields

Operator Extension Case transform
Standard operator list String, Int No transform, to uppercase, to lowercase

Key information

  • For extension, don't include a leading period; for example, use html instead of .html.

URL file name

Identifies requests that include the specified file name in the requesting URL.

Required fields

Operator File name Case transform
Standard operator list String, Int No transform, to uppercase, to lowercase

Key information

  • To specify multiple file names, separate each file name with a single space.

URL path

Identifies requests that include the specified path in the requesting URL.

Required fields

Operator Value Case Transform
Standard operator list String, Int No transform, to uppercase, to lowercase

Key information

  • A file name value can take advantage of wildcard values. For example, each file name pattern can consist of one or more asterisks (*), where each asterisk matches a sequence of one or more characters.

Reference for rules engine match conditions

Standard operator list

For rules that accept values from the standard operator list, the following operators are valid:

  • Any
  • Equals
  • Contains
  • Begins with
  • Ends with
  • Less than
  • Less than or equals
  • Greater than
  • Greater than or equals
  • Not any
  • Not contains
  • Not begins with
  • Not ends with
  • Not less than
  • Not less than or equals
  • Not greater than
  • Not greater than or equals

For numeric operators like Less than and Greater than or equals, the comparison used is based on length. In this case, the value in the match condition should be an integer that's equal to the length you want to compare.

Next steps