Regular expression cheat sheet for Varnish

Attachment Size
fdisk.jpg 182.19 KB

Varnish regular expressions are NOT case sensitive. Varnish uses POSIX regular expressions, for a complete guide, see: "man 7 regex"

Basic matching:

req.url ~ "searchterm"

True if req.url contains "searchterm" anywhere.

req.url == "searchterm"

True if req.url is EXACTLY searchterm

Matching at the beginning or end of a string

req.http.host ~ "^www."

True if req.http.host starts with "www" followed by any single character.

req.http.host ~ "^www\."

True if req.http.host starts with "www.". Notice that . was escaped.

req.url ~ "\.jpg$"

True if req.url ends with ".jpg"

Multiple matches

req.url ~ "\.(jpg|jpeg|css|js)$"

True if req.url ends with either "jpg", "jpeg", "css" or "js".

Matching with wildcards

req.url ~ "jp.g$"

True if req.url ends with "jpeg", "jpag", "jp$g" and so on, but NOT true if it ends with "jpg".

req.url ~ "jp.*g$"

True if req.url ends with "jpg", "jpeg", "jpeeeeeeeg", "jpasfasf@@!!g" and so forth (jp followed by 0 or more random characters ending with the letter 'g').

Conditional matches

req.url ~ "\.phg(\?.*)?$"

True if req.url ends with ".php" ".php?foo=bar" or ".php?", but not ".phpa". Meaning: Either it ends with just ".php" or ".php" followed by a question mark any any number of characters.

req.url ~ "\.[abc]foo$"

True if req.url ends with either ".afoo" ".bfoo" or ".cfoo".

req.url ~ "\.[a-c]foo$"

Same as above.

Replacing content

set req.http.host = regsub(req.http.host, "^www\.","");

Replaces a leading "www." in the Host-header with a blank, if present.

set req.http.x-dummy = regsub(req.http.host, "^www.","leading-3w.");

Sets the x-dummy header to contain the host-header, but replaces a leading "www." with "leading-3w" example:

Host: www.example.com =>

Host: www.example.com

X-Dummy: leading-3w.example.com

Host: example.com =>

Host: example.com

X-Dummy: example.com