The location from nginx conf:

location ~/photos/resize/(\d+)/(\d+) {
    # Here var1=(\d+), var2=(\d+)
}

How to I get variables from location in nginx?

up vote 16 down vote accepted

The regex works pretty much like in every other place that has it.

location ~/photos/resize/(\d+)/(\d+) {
  # use $1 for the first \d+ and $2 for the second, and so on.
}

Looking at examples on the nginx wiki may also help, http://wiki.nginx.org/Configuration

In addition to the previous answers, you can also set the names of the regex captured groups so they would easier to be referred later;

location ~/photos/resize/(?<width>(\d+))/(?<height>(\d+)) {
  # so here you can use the $width and the $height variables
}

see NGINX: check whether $remote_user equals to the first part of the location for an example of usage.

  • This is apparently necessary, if there's also another nested location with another regex and regex capture groups. Because inside that other location, $1 $2 $3 etc will refer to values from the nested regex, overwriting the $1 $2 ... in the outer regex. An alias /$1 in the outer regex, will use the $1 from the inner regex, which likely results in file-not-found. – KajMagnus Apr 15 at 8:46
  • I think you can just write (?<width>\d+) instead of (?<width>(\d+)), or is there some other reason for this -- perhaps to also get $1 as well as $width ? – Cameron Kerr May 2 at 18:05

You may try this:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.