Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: map regexp непонятки
Hello!
On Wed, Dec 04, 2013 at 01:58:41PM +0400, Kalinin Mike wrote:
> Здравствуйте.
>
> Не получается следующая штука
>
> map $connection $upstream_group_num {
> default 0;
> "?<connection>\d{1}&" $connection;
> }
>
> т.е. я хочу взять последнюю цифру из встроенной переменной $connection
> и на ее основе отправлять запрос на определенный апстрим бекендов.
>
> nginx данную регулярку принимает, но всегда выдает default.
>
> Я не врубаюсь как он их применяет. Как заставить nginx ее отрабатывать?
Проблемы конфигурации, которую вы пытаетесь написать:
1. У вас map'е используется не регулярное выражение, а константная
строка. Чтобы было регулярное выражение - перед ним должне быть
указан символ "~", см. http://nginx.org/r/map/ru.
2. Даже если сделать регулярное выражение из того, что у вас
написано - работать не будет, т.к. то, что у вас написано -
невозможно скомпилировать:
$ pcretest
PCRE version 8.33 2013-05-28
re> /?<connection>\d{1}&/
Failed: nothing to repeat at offset 0
re>
3. Не надо пытаться менять значение переменной $connection. Толку
не будет, а плохо - может.
Правильно как-то так:
map $connection $upstream_group {
default 0;
"~(?<foo>\d)$" $foo;
}
Впрочем, я бы рекомендовал посмотреть вместо этого в сторону split_clients,
http://nginx.org/ru/docs/http/ngx_http_split_clients_module.html
--
Maxim Dounin
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|