Re: Права при запуске перлового обработчика и еще кое что
Denis F. Latypoff
denis at gostats.ru
Mon Apr 14 14:16:14 MSD 2008
Hello Павел,
Monday, April 14, 2008, 4:30:39 PM, you wrote:
> Первое:
> Перловый обработчик инициализируется с правами рута, а хэндлер
> вызывается уже под непривилегированным пользователем. То есть
> package nginxhandler;
> use strict;
> use warnings;
> use nginx;
`echo \`whoami\` >>> /tmp/whoami `;
> sub handler {
> my $r = shift;
> $r->send_http_header("text/html");
> $r->print(`whoami`);
> return HTTP_OK;
> }
> Это дает "root" в файле /tmp/whoami и "nobody" на выходе из nginx'a.
> Это нормальное поведение? Можно как-нибудь сделать так, чтобы загрузка
> была все-таки из под nobody?
> И второе:
> Стало интересно можно ли запинать HTML::Mason для работы с nginx.
> Оказалось, что заводится с полпинка, но возник следующий вопрос.
> по умолчанию модуль выводит все, что он нагенерил в STDOUT, откуда
> nginx'ом отправляется то ли в /dev/null, то ли еще куда-то.
> Но если задать мейсону праметр out_method, то он вместо print делает
> вызов данной функции.
> Есть у меня вот такой обработчик:
> package nginxhandler;
> use nginx;
> ...
> our $r; # XXX !!! чтобы $r было видно в out_method
> my $mason = new HTML::Mason::Interp(
> comp_root => $Config::html,
> data_dir => $Config::var .
> '/mason_data/',
> use_strict => 1,
> out_method => sub {
> $r->print(@_);
> },
> );
> sub handler {
> $r = shift;
> $mason->exec(....);
> return HTTP_OK;
> }
> Собственно вопрос. Может ли случиться такое: Мейсон надолго
> задумается(во всех рабочих процессах) на exec'е,
тогда все остальные подключенные соединения будут ждать Мейсона.
> приходит еще один запрос,
придет он только тогда, когда Мейсона отпустит.
> его подхватывает какой-нибудь рабочий процесс, успевает подменить $r своим
> объектом и, вдруг, первый процесс кончает работу и выплевывает большую кучу
> контента. Уйдет ли контент нужному клиенту или перемешается?
--
Best regards,
Denis mailto:denis at gostats.ru
More information about the nginx-ru
mailing list