Валентин Бартенев
September 17, 2014 04:48AM
On Wednesday 17 September 2014 04:25:08 Nikolay wrote:
> Здравствуйте, есть задача: перенаправить запрос c uri вида
> /some/path/03_dfsakfa на бекенд server03.domain.tld с номером 03(берется из
> uri).
> Все остальные запросы надо отправлять на upstream fpm.
>
> OS Debian 7.6
> nginx version: nginx/1.2.1
>
> При перезапуске nginx получаю ошибку:
> Restarting nginx: nginx: [emerg] invalid number of the map parameters in
> /etc/nginx/nginx.conf
>
> Подскажите, что я делаю неправильно, где ошибка?
>
> nginx.conf
>
> http {
> ...
> ...
> upstream fpm {
> server 1.1.1.1:9001;
> server 2.2.2.2:9001;
> }
>
> map $uri $back {
> default "fpm";
> ~*"/some/path/(?<key>^\d{2})$(.+)$" server$key\.domain\.tld;
>
> }
[..]

Только в этом месте их сразу три:

1. /some/path/(?<key>^\d{2})$(.+)$
- не похоже на правильное регулярное выражение.

Вероятно хотелось этого:
^/some/path/(?<key>\d{2})_.+$

2. Чтобы экранировать строку с { } - необходимо её всю
брать в кавычки:

"~*^/some/path/(?<key>\d{2})_.+$"

а не только часть.

3. Внутри блока map во второй части может находится
только одна переменная, а не строка:

server$key\.domain\.tld

Читайте http://nginx.org/r/map/ru


А самое главное, это чрезвычайно странный способ решения проблемы.

Правильнее будет как-то так:

location ~* "^/some/path/(?<key>\d{2})_.+$" {
fastcgi_pass server$key\.domain\.tld;
...
}

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

map uri fastcgi_pass

Nikolay September 17, 2014 04:25AM

Re: map uri fastcgi_pass

Валентин Бартенев September 17, 2014 04:48AM

Re: map uri fastcgi_pass

Nikolay September 17, 2014 05:37AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 52
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready