使用nginx和FastCGI的Perl Web服务 – 无法读取参数

关于如何使用FastCGI到CGI包装来使用Nginx来提供Perl代码,有很多教程。 但是我很喜欢使用Perl模块,所以我不需要包装器。 我试图找出正确的方法来设置。 这是我迄今为止的代码

#!perl use CGI; use FCGI; my $s = FCGI::OpenSocket(':9000',20); my $r = FCGI::Request( *STDIN,*STDOUT,*STDERR,%ENV,$s); while ($r->Accept >= 0) { my $cgi = CGI->new; print "Content-type: text/htmlnn"; print "<html><body>The foo input is ",$cgi->param('foo'),"</body></html>"; $r->Finish; }

并像这样在Nginx中启用它:

location /foo { include /etc/Nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.pl; }

问题是,无论我调用脚本多less次, param返回自启动程序以来第一次被调用的值。 有没有更好的方法来做到这一点? 我也愿意替代CGI.pm

客户端浏览器closures时中断服务器端perl CGI脚本

从网页调用Python脚本

我如何以编程方式重新启动一个系统服务(而不是apache)从Linux中的Apache?

PHP:testing两个双variables给出不同的结果,而不改变variables

截断的输出使用Python瓶0.12.8作为Apache服务器上Windows下的CGI应用程序

Apache 2.2 CGI perl超时,即使定期打印仍然超时

麻烦运行python脚本作为cgi下apache(Ubuntu的12)

我怎样才能从Windows上的Perl CGI脚本分叉后台进程?

禁用Apache服务器的子域上的可执行代码(CGI / SSI / PHP /等)

Internet Explorer 8 + Deflate

CGI :: Fast将为您处理大部分工作,包括设置守护进程。

use CGI::Fast; local $ENV{FCGI_SOCKET_PATH} = ":9000"; local $ENV{FCGI_LISTEN_QUEUE} = 20; while ($q = CGI::Fast->new) { print $q->header; print "<html><body>The foo input is ","</body></html>"; }

另外一个选择是Nginx :: Simple ,它使您可以更好地控制cgi-script-as-daemon的行为。

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...