我有问题设置CGI脚本要在Nginx的运行,到目前为止我发现http://wiki.nginx.org/SimpleCGI这个东西,但问题是,我不能让运行作为服务perl脚本,这样它会在后台运行,甚至在重新启动的情况下,它会自动开始运行
你有什么主意吗? 我运行CentOS 5的
我找到了一些解决方案, 在这里 ,但我不能整合与给定的代码有这个Perl脚本,我在Perl的完全为零,请帮我谢谢
我有问题设置CGI脚本要在Nginx的运行,到目前为止我发现http://wiki.nginx.org/SimpleCGI这个东西,但问题是,我不能让运行作为服务perl脚本,这样它会在后台运行,甚至在重新启动的情况下,它会自动开始运行
你有什么主意吗? 我运行CentOS 5的
我找到了一些解决方案, 在这里 ,但我不能整合与给定的代码有这个Perl脚本,我在Perl的完全为零,请帮我谢谢
Nginx的是Web服务器。 您需要使用应用服务器为您的任务,如uWSGI的例子。 它可以使用其原生非常有效的二进制接口称为uwsgi nginx的交谈。
Nginx的没有原生支持CGI(它支持FASTCGI代替)。 这个典型的解决方案是在运行Perl脚本作为FastCGI进程和编辑nginx的配置文件重新请求定向到FastCGI进程。 这是如果你想要做的是运行一个CGI脚本一个相当复杂的解决方案。
你必须使用nginx的这个解决方案? 如果你想要做的就是执行一些的Perl CGI脚本,可以考虑使用Apache或者Lighttpd的,因为他们来与本地将处理您的CGI脚本,并且不需要进行运行作为一个单独的进程脚本CGI模块。 要做到这一点,你需要安装Web服务器和编辑Web服务器配置文件来加载CGI模块。 对于Lighttpd的,你需要在配置文件中添加一行,使的CGI文件处理。 然后把CGI文件放在cgi-bin文件夹。
安装不同的端口上运行其他Web服务器(Apache时,lighttpd的)。 然后代理你的CGI请求nginx的Web服务器。
你只需要添加此nginx的配置,之后安装在Web服务器上8080
location /cgi-bin {
proxy_pass http://127.0.0.1:8080;
}
看看Nginx的位置指令解释更多的细节。
我发现使用FastCGI比运行另一台Web服务器更好一点这个技巧。 http://nginxlibrary.com/perl-fastcgi/
我发现这一点: https://github.com/ruudud/cgi它说:
===
On Ubuntu: apt-get install nginx fcgiwrap
On Arch: pacman -S nginx fcgiwrap
Example Nginx config (Ubuntu: /etc/nginx/sites-enabled/default):
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log;
location / {
root /srv/static;
autoindex on;
index index.html index.htm;
}
location ~ ^/cgi {
root /srv/my_cgi_app;
rewrite ^/cgi/(.*) /$1 break;
include fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME /srv/my_cgi_app$fastcgi_script_name;
}
}
改变根和fastcgi_param线含有CGI脚本的目录,例如,在这个存放在cgi-bin /目录。
如果你是一个控制狂和fcgiwrap手动运行,一定要fastcgi_pass发生相应的变化。 使用外的现成的fcgiwrap设置时在该示例中列出的路径是在Ubuntu默认值。
===
我要试试。