Welcome! Log In Create A New Profile

Advanced

perl модуль, возвращение запроса на обработку nginx

Alexey Shilo
November 02, 2012 01:04PM
Здравствуйте, столкнулся с следующей задачей:
необходимо фильтровать HTTP запросы на уровне nginx, нужно пропускать GET
запросы и POST запросы в теле которых валидный XML.
Написал на перле следующий модуль (в конце сообщения).
Всё отлично работает, проверяет валидность, адекватно реагирует, НО... в
случае валидности POST запроса с XML он не возвращается на обработку
nginx'у (не происходит выдача нужного контента ни через proxy_pass, ни
через fastcgi_pass, ни через root), возвращает 405 Not Allowed.
Пожалуйста подскажите как сделать что-бы продолжалась обработка запроса
после проверки перловым модулем?

Модуль:

package onlyxml;

use nginx;
use strict;
use XML::Simple;


sub test {
my $r = shift;

if ($r->request_method eq "POST") {
if ($r->has_request_body(\&post)) {
return 400; # не валидный XML
} else {
return 401; # пустой запрос
}
} else {
return DECLINED; # не GET запросы
}

}

sub post {
my $r = shift;

$r->send_http_header;
my $xs = new XML::Simple();
my $hash;
eval {$hash = $xs->XMLin($r->request_body)};
if ($@){
return 400; # не валидный
} else {
### TODO: вернуть запрос nginx'у
return DECLINED; # Валидный xml
}
}

1;
__END__
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

perl модуль, возвращение запроса на обработку nginx

Alexey Shilo November 02, 2012 01:04PM

Re: perl модуль, возвращение запроса на обработку nginx

Alexey Shilo November 03, 2012 11:40AM

Re: perl модуль, возвращение запроса на обработку nginx

Maxim Dounin November 06, 2012 06:14AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

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