Обнуление выделений при использовании map
gz
nginx-forum на forum.nginx.org
Пт Май 22 02:33:25 UTC 2020
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 нет, странно получать пустые значения.
Я неправильно понимаю документацию или это ошибка?
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,288093,288093#msg-288093
Подробная информация о списке рассылки nginx-ru