Директива map и regex capturing groups не дружат
YuriV
nginx-forum на forum.nginx.org
Чт Окт 20 10:30:39 UTC 2016
Всем привет.
Наверное тема баянистая, но что-то никак не выходит каменный цветок :(
Итак, есть nginx 1.8.0 или 1.10.2, ну и регулярка в мапе не работает
нивкакую:
map $http_host $new_host {
~*^resources\.(?P<dom1>.+) res.$dom1;
~*^(www\.)?(?P<dom>.+) proxy.$dom;
default $http_host; }
Читал многие форумы, у некоторых почему-то именованные группы работали. Но
тут хоть убейся - не работает и все - вместо переменной просто строка $dom
или $dom1 подставляется.
Вот цитата и мана (http://nginx.org/ru/docs/http/ngx_http_map_module.html):
Перед регулярным выражением ставится символ “~”, если при сравнении следует
учитывать регистр символов, либо символы “~*” (1.0.4), если регистр символов
учитывать не нужно. Регулярное выражение может содержать именованные и
позиционные выделения, которые могут затем использоваться в других
директивах совместно с результирующей переменной.
Ну про позиционные выделения уже было давно сказано, что работать никогда не
будет. Но вот про именованное выделение как раз утверждалось, что должно
работать..
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,270436,270436#msg-270436
Подробная информация о списке рассылки nginx-ru