CGI-FCGI(1)
NAME
cgi-fcgi - Bridge the HTTP Server Daemon's CGI protocol with the
Perl FastCGI protocol
SYNOPSIS
cgi-fcgi -connect connName appPath [nServers]
DESCRIPTION
cgi-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 character #. 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) family 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/sock/app /httpd/bin/app
the effect is the same as executing
/bin/cgi-fcgi -connect /httpd/sock/app /httpd/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 listening 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 environment 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 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 listening 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.
BUGS
cgi-fcgi doesn't generate useful HTTP responses in case of
error, and it generates no response at all when run as
start-fcgi.