FastCGI Interface for WASD
 FCGIPLUS v1.0.0, July 2003

FCGIplus   Copyright © 2003 Mark G.Daniel
This program, comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under the conditions of the GNU GENERAL PUBLIC LICENSE, version 2.
FastCGI   Copyright © 1995-1996 Open Market, Inc.
Licence Terms


The FCGIplus interface allows WASD based servers to access applications built using Open Market's FastCGI v1.0 specification.

" FastCGI is a fast, open, and secure Web server interface that solves the performance problems inherent in CGI without introducing any of the new problems associated with writing applications to lower-level Web server APIs. Modules to support FastCGI can be plugged into Web server APIs such as Apache API, NSAPI, and ISAPI. Key considerations in designing FastCGI included minimizing the cost of migrating CGI applications (including applications written in popular scripting languages such as Perl), supporting both single-threaded and multi-threaded application programming, supporting distributed configurations for scaling and high availability, and generalizing the roles that gateway applications can play beyond CGI's 'responder' role. "

http://www.fastcgi.com/

The FCGIPLUS kit does not provide the resources to build FastCGI-enabled applications for the OpenVMS environment.

NOTE

This interface has been developed on the test-bench only. The author does not use or have access to live FastCGI applications. Although behaving itself with the FastCGI Developer's kit example applications there may be environments and situations where this untried interface will present problems. Developers are encouraged to analyze any such behaviour (see FCGI_WATCH below) and report problems. No example applications are provided with this kit.


Mapping Rules

These will vary according to usage requirements. There are a number of ways to configure script activations. If the script component of the path needs to vary with request then the RTE variant will be required. If constant then CGIplus can be used just as well. All FastCGI mappings require a specification for the application server host and port. These are examples.

  exec+ /fcgi/* ($CGI-BIN:[000000]FCGIPLUS)/* \
        script=nofind script=params=fcgi_connect=localhost:45678

  script+ /an_fcgi_script* /cgi-bin/fcgiplus* \
          script=params=fcgi_connect=localhost:45678


Other Configuration

Nothing in HTTPD$CONFIG specific to FCGIPLUS.

The FCGIPLUS interface itself uses some specific environment variables to tailor it's behaviour. These are generally provided using mapping rules but could be defined using logical names or assigned in DCL wrapper procedures.

FCGI_CONNECT Provides the application server host and port as a string.
  script=params=fcgi_connect=localhost:45678
FCGI_BUFFER The default application read buffer is 16384 bytes in size. It must be large enough to accomodate any FastCGI PDU sent by the application. If not an error is reported. This environment variable can be used to set this buffer size. The FastCGI Specification limits this at 65,535 bytes maximum.
  script=params=(fcgi_connect=localhost:45678,fcgi_buffer=32768)
FCGI_STDERR Include the application server's STDERR stream in request output. Normally this goes into the bit-bucket but may be useful when 'debugging'.
  script=params=(fcgi_connect=localhost:45678,fcgi_stderr=1)
FCGI_WATCH Provide 'debugging' information as plain-text output. Significant events and a full hexadecimal dump of network traffic provide a useful snapshot of any one transaction.
  script=params=(fcgi_connect=localhost:45678,fcgi_watch=1)


Problems?