微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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的行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐