在我看来,将网站的各个功能放在单独的 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"
))
)
或者我可能完全忽略了其他东西?只有当指向单个二进制文件时,我才能启动 lighttpd。
编辑:为了确保我说清楚:我需要的是像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 配置中的几个二进制文件。