Plasma GitLab Archive
Projects Blog Knowledge

Module Netcgi_plex


module Netcgi_plex: sig .. end

Netplex support for FastCGI, SCGI and AJP connectors




Factory


val factory : ?config:Netcgi.config ->
?enable:[ `AJP | `FCGI | `SCGI ] list ->
?name:string ->
?output_type:Netcgi.output_type ->
?arg_store:Netcgi.arg_store ->
?exn_handler:Netcgi.exn_handler ->
(Netplex_types.container -> Netcgi.cgi -> unit) ->
Netplex_types.processor_factory
Reads a Netplex configuration section like
    processor {
      type = "netcgi";          (* or the overridden [name] *)
      timeout = 15;             (* optional *)
      mount_dir = "/url/path";  (* optional *)
      mount_at = "/url/path";   (* optional alternative to mount_dir *)
    }
 

and creates a processor for the protocols "fcgi", "scgi", and "ajp" (or a subset of these protocols if the enable parameter restricts them). A complete service definition looks thus like:

      service {
          name = "name_of_service";
          protocol {
              name = "fcgi";        (* or "scgi" or "ajp" *)
              address {
                  type = "internet";
                  bind = "localhost:<port>";
              };
          };
          (* ... several protocol sections allowed! *)
          processor {
              type = "netcgi";
          };
          workload_manager {
              type = "dynamic";
              max_jobs_per_thread = 1;  (* only reasonable value *)
              min_free_job_capacity = <n>;
              max_free_job_capacity = <n>;
              max_threads = <n>;
          };
      }
 

The processor calls the argument function of type container -> cgi -> unit for every incoming request.

The timeout parameter specifies when inactive connections are timed out (in seconds). The mount_dir and mount_at parameters define which part of the URL is considered as SCRIPT_NAME:

  • By default (if neither mount_dir nor mount_at) are given SCRIPT_NAME is determined in a protocol-dependent way. Usually, the server transmits SCRIPT_NAME, but see the note below.
  • If mount_dir is present, the processor accepts only URLs that have this path as true prefix directory, i.e. the URL path is <mount_dir>/<name><rest>. The part <mount_dir>/<name> is taken as SCRIPT_NAME.
  • If mount_at is present, the processor accepts only URLs that have this path as prefix, i.e. the URL path is <mount_at><rest>. <mount_at> is taken as SCRIPT_NAME.
The background is that SCRIPT_NAME is commonly used to distinghuish between different web actions of the netcgi application. The actions are simply names in a directory like /bin/<name> or /servlet/<name>. Not all web servers/protocols transmit good values for SCRIPT_NAME, however. By specifying mount_dir or mount_at one can force to interpret a certain prefix of the request URL as SCRIPT_NAME.


config : The Netcgi configuration to use, default is Netcgi.default_config
enable : Which protocols to support. Default is to support all protocols
name : Defines the name of the processor. Default is "netcgi".
output_type : Default: `Direct ""
arg_store : Default: `Automatic for all arguments.
exn_handler : See Netcgi.exn_handler. Default: delegate all exceptions to the default handler.

Processors



The following functions create the processors directly
type mountpoint = [ `Mount_at of string | `Mount_dir of string ] 
val fcgi_processor : ?config:Netcgi.config ->
?output_type:Netcgi.output_type ->
?arg_store:Netcgi.arg_store ->
?exn_handler:Netcgi.exn_handler ->
?timeout:float ->
?mount:mountpoint ->
(Netplex_types.container -> Netcgi_fcgi.cgi -> unit) ->
Netplex_types.processor
val scgi_processor : ?config:Netcgi.config ->
?output_type:Netcgi.output_type ->
?arg_store:Netcgi.arg_store ->
?exn_handler:Netcgi.exn_handler ->
?timeout:float ->
?mount:mountpoint ->
(Netplex_types.container -> Netcgi.cgi -> unit) -> Netplex_types.processor
val ajp_processor : ?config:Netcgi.config ->
?output_type:Netcgi.output_type ->
?arg_store:Netcgi.arg_store ->
?exn_handler:Netcgi.exn_handler ->
?timeout:float ->
?mount:mountpoint ->
(Netplex_types.container -> Netcgi.cgi -> unit) -> Netplex_types.processor
This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml