2013-05-28 24 views
0

我使用nginx设置了一个网站,并且需要让它运行一些perl程序,所以我安装了FastCGI并设置了它。我说这个我的网站的配置:使用nginx和Perl读取POST数据FastCGI

location ~ \.pl$ { 
    gzip off; 
    include /etc/nginx/fastcgi_params; 
    fastcgi_pass unix:/var/run/fcgiwrap.socket; 
    fastcgi_index index.pl; 
    fastcgi_param SCRIPT_FILENAME /[...]/www$fastcgi_script_name; 
    fastcgi_param QUERY_STRING  $query_string; 
} 

然后我写了一个test.pl程序:

#!/usr/bin/perl 
print "Content-type:text/html\n\n"; 
print "Body here "; 
print $#ARGV; 

而且我得到的结果是“身体在这里-1”。所以perl程序正常运行。现在唯一的问题是,在我的生活中,我找不到如何读取POST数据。如果这很棘手,我也无法知道如何阅读GET URL参数。要么我就足够了。

+1

你可以'使用CGI',但在大多数情况下你想要一个真正的框架。 – jordanm

回答

1

这比看起来更简单。以下是我使用的perl脚本。

#!/usr/bin/perl 
use CGI; 

print "Content-type:text/html\n\n"; 

my $q = CGI->new; 
print "Your name is"; 
print $q->param("name"); 

就是这样。它并不特定于nginx。

+2

对,CGI的全部重点在于它是一个独立于平台的界面。但是现在强烈建议您使用全功能的Web框架,为您抽象这些细节。 (现在我喜欢[Mojolicious](http://metacpan.org/module/Mojolicious)。)它有一个可以通过Plack与nginx进行交互的图层。 – friedo

+1

顺便说一句,没有必要plaj与mojolicious + nginx。事实上,对于非常酷的实时功能,你不需要它。有关更多信息,请参阅[this](http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Nginx)。 –