Re: Вопрос про map, переменные и аргументы
Michael Kechinov
sam на mkechinov.ru
Вт Июл 14 20:46:27 UTC 2015
С этим возникла проблема
Собрал NGINX с perl'ом.
Читаю документацию http://nginx.org/ru/docs/http/ngx_http_perl_module.html
В ней написано, что "sub" может быть в контексте location
А "map" может быть только в контексте http.
В итоге, это не работает, потому что тестирование конфига не проходит:
http {
sub {
my $r = shift;
my $ua = $r->header_in("User-Agent");
}
add_header X-test "$ua";
map_hash_max_size 8192;
map $arg_shop_id $api_shard {
include /home/rails/nginx_shop_mapping.conf;
}
}
А это не работает, потому что маппинг происходит задолго до того, как
сработает перловая функция:
http {
server {
location {
sub {
my $r = shift;
my $ua = $r->header_in("User-Agent");
}
add_header X-test "$ua";
}
}
map_hash_max_size 8192;
map $arg_shop_id $api_shard {
include /home/rails/nginx_shop_mapping.conf;
}
}
Какой посоветуете выход?
2015-07-10 12:01 GMT+03:00 Валентин Бартенев <vbart на nginx.com>:
> On Friday 10 July 2015 10:10:04 Илья Шипицин wrote:
> > чтобы было, как вы хотите, надо чтобы nginx сначала принял запрос
> > полностью, извлек из тела параметр и только после этого спроксировал.
> > на практике nginx проксирует запрос постепенно.
> >
> [..]
>
> На практике он как раз сначала принимает весь запрос
> целиком, а потом только проксирует его на бэкенд, если
> конечно специально не выключить proxy_request_buffering:
> http://nginx.org/r/proxy_request_buffering
>
> Вытащить параметр из тела запроса можно с помощью
> встроенного перла:
> http://nginx.org/en/docs/http/ngx_http_perl_module.html
>
>
> --
> Валентин Бартенев
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
--
*Michael Kechinov <http://linkedin.com/in/mkechinov>* | sam на mkechinov.ru |
+7 950 0099233
Startups development studio: mkechinov.ru | en <http://mkechinov.com>
Personalization for e-commerce: rees46.com
HackDay: hackday.ru
Twitter-wall: twijector.com
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20150714/47b1b47c/attachment.html>
Подробная информация о списке рассылки nginx-ru