URI - the part of URL that comes after the domain (or IP/Port) name.
URI - the part of URL that comes after the domain (or IP/Port) name. http://curbsidr.com/guests/35/services/34/locations/33
/guests/35/services/34/locations/33 is the URI
location block allows 4 optional modifiers and a string to match against the URI:
= URI exactly matches location given
~ case sensitive RegEx match
~* case insensitive RegEx match
^~ optional RegEx match (RegEx is evaluated only if a regular match did not occur)
If no modifier is present, the match is interpreted as a prefix match.
location = /guests/35 will only match
/guests/35
location ~ /guests/35 will match
/guests/35
/guests/35/services/34/locations/33
but will NOT match
/Guests/35/services/34/locations/33
location ~ /guests/35 will match
/guests/35
/guests/35/services/34/locations/33
/Guests/35/services/34/locations/33
and so on
the tricky part is the order in which multiple location blocks are evaluated.
In general the longest most specific match wins but there are exceptions:
- no modifier or = gives an exact match done
- else find the longest matching prefix
- the longest matching prefix has ^~ modifier done
- evaluate regular expressions, first match done
- no match, use previously stored longest matching prefix
So the order in which location block are positioned matters!
Welcome to The infinite monkey theorem
Somewhere a monkey just typed Shakespeare in TypeScript. Be the first to read the masterpieces (and the hilarious misfires) landing on the blog.

