<div dir="ltr">Меняю + на . - ничего хорошего не происходит.<div><br></div><div>В частности, вот новый код:</div><div><br></div><div><div>location / {</div><div>    perl '  </div><div>        sub {</div><div>            my $r = shift;</div><div>            my $request_shop_id = "";</div><div>            if ($r->request_method eq "GET") {</div><div>                if($r->args =~ /shop_id=([a-z0-9A-Z]+)/ ) {</div><div>                    $request_shop_id = "$1";</div><div>                }</div><div>            } else {</div><div>                $request_shop_id = $r->request_body;</div><div>            }   </div><div>            if ( $request_shop_id ne "" ) {</div><div>                $r->internal_redirect("/shard01" . $r->uri . "?" .  $r->args);</div><div>            } else {</div><div>                $r->internal_redirect("/shard_not_found");</div><div>            }</div><div>        }</div><div>    ';</div><div><br></div><div>}</div><div><br></div><div>location /shardo1 {</div><div>    # Ура</div><div>}</div><div><br></div><div>location /shard_not_found {</div><div>    # :(</div><div>}</div></div><div><br></div><div>При выполнении POST-запросов $r->request_body всегда пустое. Почему?</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-07-16 20:45 GMT+03:00 Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<span class=""><br>
On Thu, Jul 16, 2015 at 03:14:33PM +0300, Daniel Podolsky wrote:<br>
<br>
> > При правильном выполнении должен проставиться заголовок X-MY-VAR равный<br>
> > =CCCC=, но по факту ставится число 0.<br>
> > Если убрать "=" из return, то заголовок просто не ставится (видимо, пустая<br>
> > переменная).<br>
> в перле "+" - не оператор конкатенации строк, извините.<br>
<br>
</span>Поработаю К.О.:<br>
Это, в частности, означает, что результат 0 - правильный, и всё<br>
работает ровно так, как написано.<br>
<span class=""><br>
> ну и мне кажется, что $outer_variable выполнится раньше, чем код location<br>
<br>
</span>Нет.  Код, который вычисляет значение перловой переменной,<br>
выполняется в момент обращения к этой переменной.  Т.е., в случае<br>
add_header он выполнится только тогда, когда будет делаться<br>
add_header - уже в процессе возврата ответа.<br>
<br>
Отмечу также, что код perl_set выполняется только один раз за<br>
запрос, и результат выполнения - кешируется до окончания запроса.<br>
Соответственно, ранее звучавшая в этом треде рекомендация<br>
сохранять значение с помощью set - избыточна.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" rel="noreferrer" target="_blank">http://nginx.org/</a><br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><b><a href="http://linkedin.com/in/mkechinov" target="_blank">Michael Kechinov</a></b> | <a href="mailto:sam@mkechinov.ru" target="_blank">sam@mkechinov.ru</a> | +7 950 0099233<br><div>Startups development studio: <a href="http://mkechinov.ru/" target="_blank">mkechinov.ru</a> | <a href="http://mkechinov.com" target="_blank">en</a></div><div>Personalization for e-commerce: <a href="http://rees46.com" target="_blank">rees46.com</a></div><div>HackDay: <a href="http://hackday.ru/" target="_blank">hackday.ru</a> <br>Twitter-wall: <a href="http://twijector.com" target="_blank">twijector.com</a></div></div></div>
</div>