GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Nginx::ReadBody::Russian(3) User Contributed Perl Documentation Nginx::ReadBody::Russian(3)

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 нет средств, позволяющих принимать решения об обработке запроса на основании информации, содержащейся в его теле. Этот модуль добавляет такие средства.

"read($request);"
Предназначен быть обработчиком того location, с телами запросов в который надо работать.
"handler($request, $variableName, $defaultValue, $debug)"
Метод извлекает из внутренних структур модуля обработчик, соответствующий содержимому $variableName. Если необходимо, обработчик сначала создается. Не используется, как обработчик location, но вызывается из таковых.

Возвращает указатель на функцию, определенную в $variableName (или $defaultValue).

Функция создается на основе содержимого $variableName (см. ниже) с помощью "eval", результат кешируется для повышения производительности.

Параметры метода:

$request
Обект запроса, предоставляемый nginx (см. <http://wiki.nginx.org/NginxEmbeddedPerlModule>).
$variableName
Имя переменной, определенной в "nginx.conf" и содержащей описание функции-обработчика.

Варианты описания функции:

Числовой код
Превращается в ссылку на тривиальный метод, возвращающий этот код. Вот так:

    $handler = eval "sub { return $variableValue; }";
    
Имя функции
Например, "My::Own::method".

Превращается в ссылку на указанную функцию. Вот так:

    $handler = eval "\\&$variableValue";
    
Описание функции perl
Примерно такое: "sub {...}".

Превращается в ссылку на скомпилированную описанную функцию. Вот так:

    $handler = eval $variableValue;
    

Я вообще не тестировал этот вариант! И сам я им пользоваться никогда не буду - содержимое $variableName С<eval>ится прямо во время выполнения, и к чему это может привести, если в нем будут ошибки - я не знаю.

Если содержимое $variableName не соответствет ни одному из трех вариантов, или если компиляция содержимого в ссылку на функцию по каким-либо причинам не удалась - возвращается ссылка на функцию, просто возвращающую код 500.

$defaultValue
Этот параметр используется вместо содержимого переменной, имя которой указано в $variableName, если она не определена или пределена как пустая строка.
$debug
Определяет уровень логирования. См. $read_body_debug.
"variable($request, $variableName, $defaultValue, $debug)"
Умный - ну, не совсем тупой - извлекатель переменных, определенных в конфигурации "nginx". Не используется, как обработчик location, но вызывается из таковых.

Параметры:

$request
Обект запроса, предоставляемый nginx (см. <http://wiki.nginx.org/NginxEmbeddedPerlModule>).
$variableName
Имя переменно, содержимое которой надо вернуть.
$defaultValue
Значение, возвращаемое, если переменная не определена или определена как пустая строка. Может быть неопределенным ("undef").

Если переменная не определена, а это значение определено - переменная устанавливливается в это значение. И, таким образом, становится определенной на протяжении последующей обработки запроса.

$debug
Определяет уровень логирования. См. $read_body_debug.

$read_body_debug
Определяет, должны ли отладочные сообщения быть записаны в error.log.

Возможные значения:

Число 0 или пустая строка
Значение по умолчанию. Сообщения не записываются в error.log.
Положительное число, например 1 или непустая строка
Отладочные сообщения записываются со всеми подробностями.
Специальное значение '0 but true' или отрицательное число
Отладочные сообщения записываются, но некоторые подробности опускаются.
$read_body_nodata
Ссодержит описание функции (см. "handler").

Значение по умолчанию: 400.

Обработчик "read()" вызывает эту функцию, если переданный ему запрос не содержит тела.

Функция вызывается с одним параметром: объектом запроса (см. <http://wiki.nginx.org/NginxEmbeddedPerlModule>).

Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.

$read_body_check
Содержит описание функции (см. "handler").

Значение по умолчанию: '0 but true'. Это означает, что, если эта переменная не определена, запрос будет направлен в функцию, определенную в $read_body_done.

Функция вызывается сразу после получения тела запроса для его проверки.

Функция вызывается с одним параметром: объектом запроса (см. <http://wiki.nginx.org/NginxEmbeddedPerlModule>).

Вернуть фунция должна "TRUE" или "FALSE" (истинное или ложное значение).

$read_body_done
Содержит описание функции (см. "handler").

Значение по умолчанию: 500. Это означает, что, если эта переменная не определена, клиенту уйдет код ошибки 500. Это чтобы администратор сразу заметил, что он забыл определить эту переменную.

Запрос передается этой функции, если $read_body_check вернет "TRUE".

Функция вызывается с одним параметром: объектом запроса (см. <http://wiki.nginx.org/NginxEmbeddedPerlModule>).

Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.

$read_body_false
Содержит описание функции (см. "handler").

Значение по умолчанию: 400.

Запрос передается этой функции, если $read_body_check вернет "FALSE".

Функция вызывается с одним параметром: объектом запроса (см. <http://wiki.nginx.org/NginxEmbeddedPerlModule>).

Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.

Не экспортирует ничего.

<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.

2010-04-19 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.