Директива 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