С этим возникла проблема Собрал 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 Валентин Бартенев <vb...@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>* | s...@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
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru