Lighttpd

在一個 lighttpd 實例上使用多個 FCGI 二進製文件 - 可能嗎?

  • October 29, 2016

在我看來,將我網站的單獨功能保存在單獨的 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 的工作原理,這不是一個很難回答的問題。我想我只是希望。

引用自:https://serverfault.com/questions/343783