2

我使用带有这个脚本的 nginx作为 FastCGI 包装器,我从以下开始:

spawn-fcgi -F 3 -u www-data -s /var/run/perl-fcgi.sock -P /var/run/perl-fcgi.pid -- ./perl-fcgi.pl

现在,假设我有一个简单的脚本:

#!/usr/bin/perl

print "Content-type: text/plain\r\n\r\n";
print "hello\n";

脚本运行良好,当我请求 /text.pl 时,我看到了“hello”。但是正如您在 FastCGI 包装器的第 106 行中看到的那样,该脚本是使用 exec() 执行的,因此它基本上是在其自己的 Perl 环境中运行的。当我没有已经初始化的脚本而是独立调用它时,它不会破坏 FastCGI 的整个概念吗?

在 nginx 上通过 FastCGI 进行交互的首选方式是什么?

干杯,--polemon

PS:spawn-fcgi是来自 lighttpd 的程序,它启动 FCGI 包装器并将它们绑定到套接字。

4

1 回答 1

4

是的,它破坏了 FCGI 的整个概念,但这是设计使然。

您使用的脚本是 FCGI 到 CGI 适配器,旨在解决 ngnix 故意无法提供 CGI 脚本的问题。

要“正确”使用 FCGI,只需将 ngnix 指向您的 FCGI 感知脚本。从好的方面来说,如果 ngnix 可以与这个 FCGI-CGI 适配器通信,你就知道它可以与另一个 FCGI 脚本通信。具体的服务器配置可能是 serverfault 的问题。

于 2010-08-13T04:44:47.120 回答