Nginx request_uri without args

The accepted answer pointed me in the right direction, but I had to figure out where to add that directive, After some time investigating I found set_by_lua_block

set_by_lua_block $request_uri_path {
    return string.gsub(ngx.var.request_uri, "?.*", "")
}

I hope it saves some time to those who comes here.


I use this map, which works without lua:

map $request_uri $request_uri_path {
  "~^(?P<path>[^?]*)(\?.*)?$"  $path;
}

You're looking for $uri. It does not have $args. In fact, $request_uri is almost equivalent to $uri$args.

If you really want exactly $request_uri with the args stripped, you can do this.

local uri = string.gsub(ngx.var.request_uri, "?.*", "")

You will need to have lua available but that will do exactly what you're asking.

Tags:

Nginx

Regex