通过使用该模块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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27043155/viewspace-732402/