October 20, 2016 06:30AM
Всем привет.
Наверное тема баянистая, но что-то никак не выходит каменный цветок :(
Итак, есть 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), если регистр символов учитывать не нужно. Регулярное выражение может содержать именованные и позиционные выделения, которые могут затем использоваться в других директивах совместно с результирующей переменной.

Ну про позиционные выделения уже было давно сказано, что работать никогда не будет. Но вот про именованное выделение как раз утверждалось, что должно работать..
Subject Author Posted

Директива map и regex capturing groups не дружат

YuriV October 20, 2016 06:30AM

Re: Директива map и regex capturing groups не дружат

Максим October 20, 2016 12:06PM

Re: Директива map и regex capturing groups не дружат

Максим October 20, 2016 12:12PM

Re: Директива map и regex capturing groups не дружат

YuriV October 21, 2016 01:25AM

Re: Директива map и regex capturing groups не дружат

Alex Vorona October 21, 2016 03:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 296
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready