如何运行Nginx的上CGI脚本(How to run CGI scripts on Nginx)

2019-06-26 13:00发布

我有问题设置CGI脚本要在Nginx的运行,到目前为止我发现http://wiki.nginx.org/SimpleCGI这个东西,但问题是,我不能让运行作为服务perl脚本,这样它会在后台运行,甚至在重新启动的情况下,它会自动开始运行

你有什么主意吗? 我运行CentOS 5的

我找到了一些解决方案, 在这里 ,但我不能整合与给定的代码有这个Perl脚本,我在Perl的完全为零,请帮我谢谢

Answer 1:

Nginx的是Web服务器。 您需要使用应用服务器为您的任务,如uWSGI的例子。 它可以使用其原生非常有效的二进制接口称为uwsgi nginx的交谈。



Answer 2:

Nginx的没有原生支持CGI(它支持FASTCGI代替)。 这个典型的解决方案是在运行Perl脚本作为FastCGI进程和编辑nginx的配置文件重新请求定向到FastCGI进程。 这是如果你想要做的是运行一个CGI脚本一个相当复杂的解决方案。

你必须使用nginx的这个解决方案? 如果你想要做的就是执行一些的Perl CGI脚本,可以考虑使用Apache或者Lighttpd的,因为他们来与本地将处理您的CGI脚本,并且不需要进行运行作为一个单独的进程脚本CGI模块。 要做到这一点,你需要安装Web服务器和编辑Web服务器配置文件来加载CGI模块。 对于Lighttpd的,你需要在配置文件中添加一行,使的CGI文件处理。 然后把CGI文件放在cgi-bin文件夹。



Answer 3:

安装不同的端口上运行其他Web服务器(Apache时,lighttpd的)。 然后代理你的CGI请求nginx的Web服务器。

你只需要添加此nginx的配置,之后安装在Web服务器上8080

location /cgi-bin {
    proxy_pass http://127.0.0.1:8080;
}

看看Nginx的位置指令解释更多的细节。



Answer 4:

我发现使用FastCGI比运行另一台Web服务器更好一点这个技巧。 http://nginxlibrary.com/perl-fastcgi/



Answer 5:

我发现这一点: 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默认值。

===

我要试试。



文章来源: How to run CGI scripts on Nginx