У меня есть простой скрипт 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
Проблема в том, что данные с сервера в браузер не отправляются. Я что-то упустил?
Я думаю, что у разработчика Java FastCGI непосредственно с fastcgi.com есть некоторые ошибки. Последний раз он был изменен в 2000 году. Проверьте мой ответ Вот, в ответе есть патч, который мне нужно было применить, чтобы интерфейс FastCGI работал более чем с одним запросом (странно, как вы даже не получили ни одного запроса). Если патч не помогает вам работать на Nginx, вероятно, в интерфейсе больше ошибок. Попробуйте Apache 2.4+. Вы можете использовать Wireshark для сравнения связи FastCGI и найти другую ошибку, или вы можете просто использовать Apache 2.4+.
Попробуйте использовать OutputStream FCGIInterface.request.outStream вместо System.out.
Хотя в документах утверждается, что System.out будет указывать на поток FastCGI, на самом деле это не так. Наверное, никто на самом деле этим не пользовался, может быть еще багов :)