我在设置要在 Nginx 上运行的 CGI 脚本时遇到问题,到目前为止,我已经找到了http://wiki.nginx.org/SimpleCGI这个东西,但问题是我不能让 perl 脚本作为服务运行,所以它会在后台运行,即使重新启动它也会自动开始运行
你有什么主意吗?我正在运行 Centos 5
我在这里找到了一些解决方案,但我无法将那里给出的代码与这个 Perl 脚本集成 我在 Perl 完全为零,请帮助我谢谢
我在设置要在 Nginx 上运行的 CGI 脚本时遇到问题,到目前为止,我已经找到了http://wiki.nginx.org/SimpleCGI这个东西,但问题是我不能让 perl 脚本作为服务运行,所以它会在后台运行,即使重新启动它也会自动开始运行
你有什么主意吗?我正在运行 Centos 5
我在这里找到了一些解决方案,但我无法将那里给出的代码与这个 Perl 脚本集成 我在 Perl 完全为零,请帮助我谢谢
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)。然后使用 nginx 将您的 CGI 请求代理到网络服务器。
在 8080 上安装 Web 服务器后,您只需将其添加到 nginx 配置中
location /cgi-bin {
proxy_pass http://127.0.0.1:8080;
}
查看Nginx Location Directive Explained了解更多详细信息。
Nginx 是一个网络服务器。您需要为您的任务使用应用程序服务器,例如uWSGI。它可以使用其原生的非常有效的二进制接口 uwsgi 与 nginx 通信。
我发现这个使用 FastCGI 的 hack 比运行另一个 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;
}
}
将 root 和 fastcgi_param 行更改为包含 CGI 脚本的目录,例如此存储库中的 cgi-bin/ 目录。
如果您是控制狂并手动运行 fcgiwrap,请务必相应地更改 fastcgi_pass。当使用开箱即用的 fcgiwrap 设置时,示例中列出的路径是 Ubuntu 中的默认路径。
===
我正要试一试。