POST data processing with perl

Daniel Podolsky onokonem на gmail.com
Пн Фев 1 15:44:00 MSK 2010


Что-то я совсем не понимаю, как это работает.

Вот пришел запрос. nginx прочел заголовки и выбрал location для
обработки запроса. Позвал все упомянутые в этом location perl_set,
видимо - в порядке упоминания.

Одна из perl_set установила обработчик на получение тела. Что
происходит дальше? Обработка запроса откладывается до возврата из
обработчика? Или надо самому поспать чутка?

А метод $r->sleep - он как работает? Вот я поставил оброаботчик.
Обработка запроса откладывается, пока я не вернусь из него?

Мне, как я уже писал, надо из обработчика тела, или из обработчика
sleep повлият на то, в каком location произойдет окончательная
обработка запроса и отправка его на бекенд.

Еще - правильно я понимаю, что переменные  $r->valiable, выставленные
из перла - доступны в конфиге? Не сумел придумать теста, который бы
надежно ответил мне на этот вопрос...

2010/2/1 Daniel Podolsky <onokonem at gmail.com>:
> День добрый!
>
> Пишу перловый модуль, который должен выбирать правильный бекенд по
> имени пользователя, которое приходит в POST.
>
> Имею две функции.
>
> Первая вызывается через perl_set, определяет, что к нам приехал POST,
> и устанавливает вторую функцию как обработчик has_request_body.
>
> Вопрос номер один - что надо вернуть после установки обработчика? ОК?
>
> Обработчик ведет себя странно. То он вызывается, то нет. Определяю это
> по строчкам в логе.
>
> Вопрос номер два - это почему так?
>
> Вопрос номер три - как мне, обработав данные POST, заставить nginx
> проксировать этот запрос без изменений к нужному бекенду? Могу
> переменную установить, могу редирект сделать внутренний. Как
> правильно?
>
> Спасибо.
>
> С уважением,
> Даниил Подольский.
>


Подробная информация о списке рассылки nginx-ru