ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Nginx通过内置的Perl模块执行Perl程序

Nginx通过内置的Perl模块执行Perl程序

原创 Linux操作系统 作者:nginx_web 时间:2012-06-10 18:13:55 0 删除 编辑

 

 

    通过使用该模块Nginx服务器可以直接在Nginx内部执行Perl,或者是通过SSI来调用Perl

 

    该模块在默认安装是没有别安装,因此要想安装该模块就需要在编译是指定--with-http_perl_module选项,同时需要Nginx服务器所在的系统装有Perl 5.6.1及以上的版本。

 

    然而,需要注意的是,该模块是一个实验性模块,因此可能会存在一些bug,同时在使用给该模块上要注意以下两点:

 

n         如果Perl模块执行了延时的操作,例如,DNS查询,数据库查询,等等,那么运行该Perl脚本的worker进程将会一直等待该进程的完成。因此,在使用嵌入式的Perl脚本时,应该尽可能的简短,而且要尽快的执行操作。

 

n         如果使用'kill -HUP '方式重新载入Nginx的配置文件,那么可能会导致Nginx发生内存溢出。

 

示例配置

 

http {

  perl_modules  perl/lib;

  perl_require  hello.pm;

 

  perl_set  $msie6  '

  sub {

    my $r = shift;

    my $ua = $r->header_in("User-Agent");

    return "" if $ua =~ /Opera/;

    return "1" if $ua =~ / MSIE [6-9] \.\d+/;

    return "";

  }

 ';

 

  server {

    location / {

      perl  hello::handler;

    }

  }

}

   

    perl/lib/hello.pm:

 

package hello;

use nginx;

 

sub handler {

  my $r = shift;

  $r->send_http_header("text/html");

  return OK if $r->header_only;

 

  $r->print("hello!\n
");

  $r->rflush;

 

  if (-f $r->filename or -d _) {

    $r->print($r->uri, " exists!\n");

  }

 

  return OK;

}

 

1;

__END__

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27043155/viewspace-732402/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    52
  • 访问量
    419094