NAME¶
cgi-fcgi - bridge from CGI to FastCGI
SYNOPSIS¶
cgi-fcgi -f cmdPath
 
cgi-fcgi -bind -connect connName
 
cgi-fcgi -start -connect connName appPath [nServers]
 
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/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 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 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 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.
SEE ALSO¶
FGCI_accept(3).
 (in Debian, /usr/share/doc/libfcgi?/*)
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.
On Digital UNIX 3.0 systems the implementation of Unix Domain sockets does not
  work when such sockets are stored on NFS file systems. Symptom: 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 DISCLAIMER OF
  ALL WARRANTIES. $Id: cgi-fcgi.1,v 1.1.1.1 1997/09/16 15:36:26 stanleyg Exp
  $