Welcome! Log In Create A New Profile

Advanced

Обнуление выделений при использовании map

gz
May 21, 2020 10:33PM
nginx/1.17.10

При использовании регулярных выражений в map обнуляются выделения уровня location, даже в случае, если в выражениях map не используются выделения.

https://nginx.org/ru/docs/http/ngx_http_map_module.html

> Регулярное выражение может содержать именованные и позиционные выделения, которые могут затем использоваться в других директивах совместно с результирующей переменной.

-------------------------------------------------

map $uri $suffix {
'~*.' '';
}



server {


location ~* /test/(.+) {
# try_files $uri @blank; # non empty
try_files $uri$suffix $uri @blank; # empty
}

location @blank {
default_type 'text/plain';

return 200 '$1';
}
}

-------------------------------------------------

Обращаемся к /test/123 — получаем пустой ответ.
Стоит убрать $uri$suffix из try_files — получаем «123».
Обойти можно, используя именованные выделения в location.

Из формулировки в документации складывается ощущение, что значения позиционных выделений location'а будут переопределены если они используются в map.
Но если их в map нет, странно получать пустые значения.

Я неправильно понимаю документацию или это ошибка?
Subject Author Posted

Обнуление выделений при использовании map

gz May 21, 2020 10:33PM

Re: Обнуление выделений при использовании map

Maxim Dounin May 22, 2020 08:34AM

Re: Обнуление выделений при использовании map

gz May 24, 2020 08:38PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 86
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready