-
-
Save samuelloza/9ab502c7e13bf907320e139b99366d28 to your computer and use it in GitHub Desktop.
Regular expression cheat sheet for Varnish (.vcl). Examples of vcl regexp. Found here http://kly.no/varnish/regex.txt (by Kristian Lyngstøl)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Regular expression cheat sheet for Varnish | |
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment