Welcome! Log In Create A New Profile

Advanced

Re: Установить переменную с помощью perl внутри location

Michael Kechinov
July 16, 2015 02:12PM
Меняю + на . - ничего хорошего не происходит.

В частности, вот новый код:

location / {
perl '
sub {
my $r = shift;
my $request_shop_id = "";
if ($r->request_method eq "GET") {
if($r->args =~ /shop_id=([a-z0-9A-Z]+)/ ) {
$request_shop_id = "$1";
}
} else {
$request_shop_id = $r->request_body;
}
if ( $request_shop_id ne "" ) {
$r->internal_redirect("/shard01" . $r->uri . "?" .
$r->args);
} else {
$r->internal_redirect("/shard_not_found");
}
}
';

}

location /shardo1 {
# Ура
}

location /shard_not_found {
# :(
}

При выполнении POST-запросов $r->request_body всегда пустое. Почему?

2015-07-16 20:45 GMT+03:00 Maxim Dounin <mdounin@mdounin.ru>:

> Hello!
>
> On Thu, Jul 16, 2015 at 03:14:33PM +0300, Daniel Podolsky wrote:
>
> > > При правильном выполнении должен проставиться заголовок X-MY-VAR равный
> > > =CCCC=, но по факту ставится число 0.
> > > Если убрать "=" из return, то заголовок просто не ставится (видимо,
> пустая
> > > переменная).
> > в перле "+" - не оператор конкатенации строк, извините.
>
> Поработаю К.О.:
> Это, в частности, означает, что результат 0 - правильный, и всё
> работает ровно так, как написано.
>
> > ну и мне кажется, что $outer_variable выполнится раньше, чем код location
>
> Нет. Код, который вычисляет значение перловой переменной,
> выполняется в момент обращения к этой переменной. Т.е., в случае
> add_header он выполнится только тогда, когда будет делаться
> add_header - уже в процессе возврата ответа.
>
> Отмечу также, что код perl_set выполняется только один раз за
> запрос, и результат выполнения - кешируется до окончания запроса.
> Соответственно, ранее звучавшая в этом треде рекомендация
> сохранять значение с помощью set - избыточна.
>
> --
> Maxim Dounin
> http://nginx.org/
>
> _______________________________________________
> 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
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Установить переменную с помощью perl внутри location

Michael Kechinov July 15, 2015 05:52PM

Re: Установить переменную с помощью perl внутри location

Daniel Podolsky July 16, 2015 04:14AM

Re: Установить переменную с помощью perl внутри location

Michael Kechinov July 16, 2015 06:42AM

Re: Установить переменную с помощью perl внутри location

Daniel Podolsky July 16, 2015 08:16AM

Re: Установить переменную с помощью perl внутри location

Michael Kechinov July 16, 2015 08:18AM

Re: Установить переменную с помощью perl внутри location

Maxim Dounin July 16, 2015 01:46PM

Re: Установить переменную с помощью perl внутри location

Michael Kechinov July 16, 2015 02:12PM

Re: Установить переменную с помощью perl внутри location

Maxim Dounin July 16, 2015 02:34PM

Re: Установить переменную с помощью perl внутри location

Michael Kechinov July 16, 2015 05:02PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

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