cgi-fcgi
cgi-fcgi(1) General Commands Manual cgi-fcgi(1)
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 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 ex-
its, 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 ap-
plication 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 ex-
ecutable 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 re-
peats 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. 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)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2024
Hurricane Electric.
All Rights Reserved.