Lighttpd
在一個 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" )) )
還是我可能完全錯過了其他東西?我只能在指向單個二進製文件時啟動 lighttpd。
編輯:為了確保我清楚:我需要的是一個像
mysite.com/x.fcgi
呼叫這樣的請求/var/fcgi/x.fcgi
,同樣是一個mysite.com/y.fcgi
呼叫呼叫的請求/var/fcgi/y.fcgi
。看起來這應該很簡單,但我無法獲得讓這種情況發生的 lighttpd 配置。另外,我沒有使用任何解釋。這些是使用
fcgi_stdio.h
標頭編譯的 C++ 二進製文件。我可能需要使用 mod_rewrite 嗎?
所以在我看來,我想做的事情是不可能的,或者至少在 FCGI 下沒有提供。當你呼叫時
www.mydomain.com/thing1.fcgi
,你並沒有開始thing1.fcgi
;這已經完成了。您正在做的是向您編寫的無限執行的 FCGI 程序發送請求,該程序的核心幾乎肯定有一個無限循環,等待請求。這正是 FCGI 的本質,也是與早期 CGI 的主要區別。一旦您了解了 FCGI 的工作原理,這不是一個很難回答的問題。我想我只是希望。