Java

lighttpd 上的 FastCGI 未收到數據

  • February 24, 2013

我有一個簡單的 FastCGI 腳本:

public static void main (String args[]) {
       int count = 0;
       while(new FCGIInterface().FCGIaccept()>= 0) {
           count ++;
           System.out.println("Content-type: text/html\n\n");
           System.out.println("<html>");
           System.out.println(
                   "<head><TITLE>FastCGI-Hello Java stdio</TITLE></head>");
           System.out.println("<body>");
           System.out.println("<H3>FastCGI Hello Java stdio</H3>");
           System.out.println("request number " + count +
                   " running on host "
                   + System.getProperty("SERVER_NAME"));
           System.out.println("</body>");
           System.out.println("</html>");
       }
   }

使用 lighttpd 設置為:

server.modules   += ( "mod_fastcgi" )
fastcgi.debug = 1    
fastcgi.server = ( "/cgi" =>
( "fastcgi" =>
  ("port" => 8888,
   "host" => "127.0.0.1",
   "bin-path" => "/var/www/tiny.fcgi",
   "min-procs" => 1,
   "max-procs" => 1,
   "check-local" => "disable" 
))
)

在日誌中:

2012-11-24 04:35:04: (mod_fastcgi.c.1367) --- fastcgi spawning local 
   proc: /var/www/tiny.fcgi 
   port: 54321 
   socket  
   max-procs: 1 
2012-11-24 04:35:04: (mod_fastcgi.c.1391) --- fastcgi spawning 
   port: 54321 
   socket  
   current: 0 / 1 
2012-11-24 04:35:39: (mod_fastcgi.c.3061) got proc: pid: 0 socket: tcp:127.0.0.1:54321 load: 1 

問題是沒有數據從伺服器發送到瀏覽器。我在這裡錯過了什麼嗎?

我認為直接來自 fastcgi.com 的 Java FastCGI devkit 有一些錯誤。它最後一次修改是在 2000 年。在這裡查看我的答案,答案有一個我需要應用的更新檔,以便 FastCGI 界面可以處理多個請求(奇怪的是你甚至沒有通過一個請求)。如果更新檔不能讓它在 Nginx 上為你工作,那麼界面可能有更多的錯誤。考慮試用 Apache 2.4+。您可以使用 Wireshark 來比較 FastCGI 通信並找到其他錯誤,或者您可以只使用 Apache 2.4+。

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