在一个 lighttpd 实例上使用多个 FCGI 二进制文件-可能吗?

在一个 lighttpd 实例上使用多个 FCGI 二进制文件-可能吗?

在我看来,将网站的各个功能放在单独的 FCGI 二进制文件中更易于维护。我想要的是这样的请求:

http://mysite.com/funcA.fcgi
http://mysite.com/funcB.fcgi?action=go

要重定向到适当的文件:

/var/fcgi/funcA.fcgi
/var/fcgi/funcB.fcgi

因此,在我的 lighttpd.conf 文件中,我需要如下内容:

fastcgi.server =
( ".fcgi" =>
  (( "bin-path" => "/var/fcgi",
     "socket" => "tmp/fcgi.sock",
     "check-local" => "disable"
  ))
)

或者也许应该更像这样:

fastcgi.server = 
( "funcA.fcgi" =>
  (( "bin-path" => "/var/fcgi/funcA.fcgi",
     "socket" => "tmp/fcgi.sock",
     "check-local" => "disable"
  ))
),
( "funcB.fcgi" =>
  (( "bin-path" => "/var/fcgi/funcB.fcgi",
     "socket" => "tmp/fcgi.sock",
     "check-local" => "disable"
  ))
)

或者我可能完全忽略了其他东西?只有当指向单个二进制文件时,我才能启动 lig​​httpd。

编辑:为了确保我说清楚:我需要的是像mysite.com/x.fcgi调用这样的请求/var/fcgi/x.fcgi,同样,我需要的是mysite.com/y.fcgi调用的请求/var/fcgi/y.fcgi。这似乎应该非常简单,但我无法获得实现这一点的 lighttpd 配置。

另外,我没有使用任何解释性的东西。这些是使用fcgi_stdio.h标头编译的 C++ 二进制文件。

我可能需要使用 mod_rewrite 吗?

答案1

因此,在我看来,我想做的事情是不可能的,或者至少 FCGI 没有提供。当你调用 时www.mydomain.com/thing1.fcgi,你不会开始 thing1.fcgi;这已经完成了。你正在做的是向你编写的无限运行的 FCGI 进程发送请求,该进程的核心几乎肯定有一个无限循环,等待请求。这只是 FCGI 的本质,也是与早期 CGI 的主要区别。

一旦你理解了 FCGI 的工作原理,这个问题就不难回答。我想我只是希望如此。

答案2

https://redmine.lighttpd.net/projects/1/wiki/docs_modfastcgi 可以做到,lighttpd 配置中的几个二进制文件。

相关内容