Nginx::ReadBody::Russian - Русская документация к модулю Nginx::ReadBody для встроенного perl web-сервера nginx
Версия 0.07
#nginx.conf (part of) location /post_here { error_page 345 = @get_there; error_page 346 = @good_post; error_page 347 = @bad_post; if ($request_method != POST) { return 345; } set $read_body_debug 1; set $read_body_check 'My::Own::check_userdata'; set $read_body_done 346; set $read_body_nodata 347; set $read_body_false 347; perl Nginx::ReadBody::read; }
В nginx нет средств, позволяющих принимать решения об обработке запроса на основании информации, содержащейся в его теле. Этот модуль добавляет такие средства.
Nginx::ReadBody
read($request);
Предназначен быть обработчиком того location, с телами запросов в который надо работать.
handler($request, $variableName, $defaultValue, $debug)
Метод извлекает из внутренних структур модуля обработчик, соответствующий содержимому $variableName. Если необходимо, обработчик сначала создается. Не используется, как обработчик location, но вызывается из таковых.
$variableName
Возвращает указатель на функцию, определенную в $variableName (или $defaultValue).
$defaultValue
Функция создается на основе содержимого $variableName (см. ниже) с помощью eval, результат кешируется для повышения производительности.
eval
Параметры метода:
$request
Обект запроса, предоставляемый nginx (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
Имя переменной, определенной в nginx.conf и содержащей описание функции-обработчика.
nginx.conf
Варианты описания функции:
Превращается в ссылку на тривиальный метод, возвращающий этот код. Вот так:
$handler = eval "sub { return $variableValue; }";
Например, My::Own::method.
My::Own::method
Превращается в ссылку на указанную функцию. Вот так:
$handler = eval "\\&$variableValue";
Примерно такое: "sub {...}".
"sub {...}"
Превращается в ссылку на скомпилированную описанную функцию. Вот так:
$handler = eval $variableValue;
Я вообще не тестировал этот вариант! И сам я им пользоваться никогда не буду - содержимое $variableName С<eval>ится прямо во время выполнения, и к чему это может привести, если в нем будут ошибки - я не знаю.
Если содержимое $variableName не соответствет ни одному из трех вариантов, или если компиляция содержимого в ссылку на функцию по каким-либо причинам не удалась - возвращается ссылка на функцию, просто возвращающую код 500.
500
Этот параметр используется вместо содержимого переменной, имя которой указано в $variableName, если она не определена или пределена как пустая строка.
$debug
Определяет уровень логирования. См. $read_body_debug.
variable($request, $variableName, $defaultValue, $debug)
Умный - ну, не совсем тупой - извлекатель переменных, определенных в конфигурации nginx. Не используется, как обработчик location, но вызывается из таковых.
nginx
Параметры:
Имя переменно, содержимое которой надо вернуть.
Значение, возвращаемое, если переменная не определена или определена как пустая строка. Может быть неопределенным (undef).
undef
Если переменная не определена, а это значение определено - переменная устанавливливается в это значение. И, таким образом, становится определенной на протяжении последующей обработки запроса.
$read_body_debug
Определяет, должны ли отладочные сообщения быть записаны в error.log.
Возможные значения:
0
Значение по умолчанию. Сообщения не записываются в error.log.
1
Отладочные сообщения записываются со всеми подробностями.
'0 but true'
Отладочные сообщения записываются, но некоторые подробности опускаются.
$read_body_nodata
Ссодержит описание функции (см. handler).
handler
Значение по умолчанию: 400.
400
Обработчик read() вызывает эту функцию, если переданный ему запрос не содержит тела.
read()
Функция вызывается с одним параметром: объектом запроса (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.
$read_body_check
Содержит описание функции (см. handler).
Значение по умолчанию: '0 but true'. Это означает, что, если эта переменная не определена, запрос будет направлен в функцию, определенную в $read_body_done.
$read_body_done
Функция вызывается сразу после получения тела запроса для его проверки.
Вернуть фунция должна TRUE или FALSE (истинное или ложное значение).
TRUE
FALSE
Значение по умолчанию: 500. Это означает, что, если эта переменная не определена, клиенту уйдет код ошибки 500. Это чтобы администратор сразу заметил, что он забыл определить эту переменную.
Запрос передается этой функции, если $read_body_check вернет TRUE.
$read_body_false
Запрос передается этой функции, если $read_body_check вернет FALSE.
Не экспортирует ничего.
http://wiki.nginx.org/NginxEmbeddedPerlModule.
Даниил Подольский, <tpaba@cpan.org>
Copyright (C) 2010 by Daniel Podolsky
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.
To install Nginx::ReadBody, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Nginx::ReadBody
CPAN shell
perl -MCPAN -e shell install Nginx::ReadBody
For more information on module installation, please visit the detailed CPAN module installation guide.