Welcome! Log In Create A New Profile

Advanced

Re: Вопрос про map, переменные и аргументы

Michael Kechinov
July 15, 2015 05:34AM
С предыдущим пунктом разобрался. Другая проблема - при POST-запросах
и $r->request_body и $r->request_body_file пусты.

POST-запрос:

curl 'http://domain.com/push' -H 'Content-Type:
application/x-www-form-urlencoded; charset=UTF-8' --data
'event=view&shop_id=f95342356fa619749015b7225f3b7db3&ssid=583c5f49-e86b-477b-98f9-87507bf0e3af&count=1&item_id%5B%5D=34753&price%5B%5D=14196&is_available%5B%5D=1'

Конфигурация NGINX:

http {
perl_set $request_shop_id '
sub {
my $r = shift;
if ($r->request_method eq "GET") {
if($r->args =~ /shop_id=([a-z0-9A-Z]+)/ ) {
return "$1";
} else {
return "";
}
} else {
return $r->request_body;
}
}
';
}

В итоге, переменная $request_shop_id пуста.

Где в итоге найти данные, переданные в запросе?




2015-07-14 23:46 GMT+03:00 Michael Kechinov <sam@mkechinov.ru>:

> С этим возникла проблема
>
> Собрал 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
>



--
*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
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Вопрос про map, переменные и аргументы

Michael Kechinov July 08, 2015 06:54AM

Re: Вопрос про map, переменные и аргументы

Илья Шипицин July 10, 2015 01:12AM

Re: Вопрос про map, переменные и аргументы

Валентин Бартенев July 10, 2015 05:02AM

Re: Вопрос про map, переменные и аргументы

Michael Kechinov July 14, 2015 04:54PM

Re: Вопрос про map, переменные и аргументы

Michael Kechinov July 15, 2015 05:34AM

Re: Вопрос про map, переменные и аргументы

Валентин Бартенев July 15, 2015 07:00AM

Re: Вопрос про map, переменные и аргументы

Michael Kechinov July 15, 2015 08:08AM

Re: Вопрос про map, переменные и аргументы

Michael Kechinov July 15, 2015 08:10AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 116
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