cgi-fcgi(1)cgi-fcgi(1)NAMEcgi-fcgi - bridge from CGI to FastCGI
SYNOPSIScgi-fcgi-f cmdPath
cgi-fcgi-bind-connect connName
cgi-fcgi-start -connect connName appPath [nServers]
cgi-fcgi-connect connName appPath [nServers]
DESCRIPTIONcgi-fcgi is a CGI/1.1 program that communicates with an already-running
FastCGI application in order to respond to an HTTP request. cgi-fcgi
is also capable of starting a FastCGI application.
When you invoke cgi-fcgi as
cgi-fcgi-f cmdPath
then cgi-fcgi opens the file at cmdPath and reads its arguments from
that file. cgi-fcgi will skip lines that begin with the comment char‐
acter #. The first non-comment line should contain valid arguments in
one of the other three forms.
The -f form of cgi-fcgi is designed for Unix systems whose exec(2) fam‐
ily of system calls supports the execution of command interpreter
files. For instance, if a file with execute permission contains the
text
#! /bin/cgi-fcgi -f
-connect /httpd/root/sock/app /httpd/root/bin/app
the effect is the same as executing
/usr/bin/cgi-fcgi -connect /httpd/root/sock/app
/httpd/root/bin/app
When you invoke cgi-fcgi as
cgi-fcgi-bind -connect connName
the connName argument is either the path name of a Unix domain listen‐
ing socket or a host:port pair. If connName contains a colon, it is
assumed to be host:port. cgi-fcgi performs a connect(2) using
connName. If the connect succeeds, cgi-fcgi forwards the CGI environ‐
ment variables and stdin data to the FastCGI application, and forwards
the stdout and stderr data from the application to cgi-fcgi's stdout
(most likely connected to a Web server). When the FastCGI application
signals the end of its response, cgi-fcgi flushes its buffers and
exits, and the Web server completes the http response.
When you invoke cgi-fcgi as
cgi-fcgi-start -connect connName appPath [nServers]
then cgi-fcgi performs the function of starting one or more FastCGI
application processes. The connName argument specifies either the path
name of the Unix domain listening socket that cgi-fcgi will create, or
is "localhost:NNN" where NNN is the port number of the TCP/IP listening
socket that cgi-fcgi will create on the local machine. (cgi-fcgi will
not create processes on remote machines.) After cgi-fcgi creates the
listening socket, it forks nServers copies of a process running the
executable file appPath. If nServers is omitted, the effect is as if
the value "1" had been specified. The processes share the single lis‐
tening socket.
When you invoke cgi-fcgi as
cgi-fcgi-connect connName appPath [nServers]
cgi-fcgi performs -bind and then, if necssary, performs -start and
repeats the -bind. That is, cgi-fcgi first operates as if the command
had been
cgi-fcgi-bind -connect connName
If the connect fails, cgi-fcgi tries
cgi-fcgi-start -connect connName appPath [nServers]
and finally retries
cgi-fcgi-bind -connect connName
In this form, cgi-fcgi does not support TCP/IP connections.
ENVIRONMENT VARIABLES
The usual CGI ones, but they are not interpreted by cgi-fcgi.
SEE ALSOFGCI_accept(3).
(in Debian, /usr/share/doc/libfcgi?/*)
BUGScgi-fcgi doesn't generate useful HTTP responses in case of error, and
it generates no response at all when run as start-fcgi.
On Digital UNIX 3.0 systems the implementation of Unix Domain sockets
does not work when such sockets are stored on NFS file systems. Symp‐
tom: cgi-fcgi may core dump or may exit with status 38. Work-around:
store sockets in local file systems (/tmp often works) or use TCP/IP.
On AIX systems the implementation of listening sockets does not support
socket sharing, and the standard FastCGI application libraries can't
synchronize access to AIX listening sockets. Work-around: Don't use
the nServers argument on AIX.
HISTORY
Copyright (c) 1996 Open Market, Inc. See the file "LICENSE.TERMS" for
information on usage and redistribution of this file, and for a DIS‐
CLAIMER OF ALL WARRANTIES. $Id: cgi-fcgi.1,v 1.1.1.1 1997/09/16
15:36:26 stanleyg Exp $
1997-09-17 cgi-fcgi(1)