How do you determine when to use $request_uri
vs $uri
?
According to NGINX documentation, $request_uri
is the original request (for
$uri
is not equivalent to $request_uri
.
The $uri
variable is set to the URI that nginx
is currently processing - but it is also subject to normalisation, including:
?
and query string/
characters are replace by a single /
The value of $request_uri
is always the original URI and is not subject to any of the above normalisations.
Most of the time you would use $uri
, because it is normalised. Using $request_uri
in the wrong place can cause URL encoded characters to become doubly encoded.
Use $request_uri
in a map
directive, if you need to match the URI and its query string.