我有问题设置CGI脚本在Nginx上运行,到目前为止,我已经找到了http://wiki.nginx.org/SimpleCGI这个东西,但问题是,我不能使Perl脚本作为服务运行,以便它将在后台运行,即使在重新启动的情况下,它也会自动开始运行
你知道吗?我在运行Centos5
我已经找到了一些解决方案here,但我不能集成代码与this Perl script我在Perl完全为零,请帮助我谢谢
我有问题设置CGI脚本在Nginx上运行,到目前为止,我已经找到了http://wiki.nginx.org/SimpleCGI这个东西,但问题是,我不能使Perl脚本作为服务运行,以便它将在后台运行,即使在重新启动的情况下,它也会自动开始运行
你知道吗?我在运行Centos5
我已经找到了一些解决方案here,但我不能集成代码与this Perl script我在Perl完全为零,请帮助我谢谢
6条答案
按热度按时间zpf6vheq1#
Nginx不支持原生CGI(它支持fastCGI)。典型的解决方案是将Perl脚本作为fastCGI进程运行,并编辑nginx配置文件以将请求重定向到fastCGI进程。如果你只想运行一个CGI脚本,这是一个相当复杂的解决方案。
你必须使用nginx来解决这个问题吗?如果你想做的只是执行一些Perl CGI脚本,考虑使用Apache或Lighttpd,因为它们附带了CGI模块,这些模块将原生处理你的CGI脚本,不需要脚本作为一个单独的进程运行。为此,您需要安装Web服务器并编辑Web服务器配置文件以加载CGI模块。对于Lighttpd,您需要在配置文件中添加一行来启用CGI文件的处理。然后将CGI文件放入cgi-bin文件夹。
1sbrub3j2#
安装另一个运行在不同端口上的Web服务器(Apache,Lighttpd)。然后使用nginx将CGI请求代理到Web服务器。
你只需要在8080上安装一个web服务器后,将其添加到nginx配置中即可
查看Nginx Location Directive Explained以了解更多详细信息。
clj7thdc3#
Nginx是一个Web服务器。您需要为您的任务使用应用程序服务器,例如uWSGI。它可以使用其本地非常有效的二进制接口uwsgi与nginx进行对话。
ktecyv1j4#
我发现这个使用FastCGI的黑客比运行另一个Web服务器要好一点。http://nginxlibrary.com/perl-fastcgi/
2ledvvac5#
我发现了这个:https://github.com/ruudud/cgi说道:
将root和fastcgi_param行更改为包含CGI脚本的目录,例如此存储库中的cgi-bin/ dir。
如果您是一个控制狂,并且手动运行fcgiwrap,请确保相应地更改fastcgi_pass。示例中列出的路径是Ubuntu中使用开箱即用的fcgiwrap设置时的默认路径。
我正准备试试。
5w9g7ksd6#
基于布拉德的回答,简化和现代化,以CGI与Awstats为例:
您需要安装
fcgiwrap
包。