Using CGI - Configure - H2O - the optimized HTTP server

# H2O

the optimized HTTP/1.x, HTTP/2, HTTP/3 server

×
Powered by Oktavia

## Configure > Using CGI

Starting from version 1.7, H2O comes with a FastCGI-to-CGI gateway (`fastcgi-cgi`), which can be found under `share/h2o` directory of the installation path. The gateway can be used for running CGI scripts through the FastCGI handler.

The example below maps `.cgi` files to be executed by the gateway. It is also possible to run CGI scripts under different privileges by specifying the `user` attribute of the directive.

Example. Execute `.cgi` files using FastCGI-to-CGI gateway

    file.custom-handler:
      extension: .cgi
      fastcgi.spawn:
        command: "exec $H2O_ROOT/share/h2o/fastcgi-cgi"

The gateway also provides options to for tuning the behavior. A full list of options can be obtained by running the gateway directly with `--help` option.
Example. Output of `share/h2o/fastcgi-cgi --help`

    $ share/h2o/fastcgi-cgi --help
    Usage:
        share/h2o/fastcgi-cgi [options]

    Options:
      --listen=sockfn    path to the UNIX socket.  If specified, the program will
                         create a UNIX socket at given path replacing the existing
                         file (should it exist).  If not, file descriptor zero (0)
                         will be used as the UNIX socket for accepting new
                         connections.
      --max-workers=nnn  maximum number of CGI processes (default: unlimited)
      --pass-authz       if set, preserves HTTP_AUTHORIZATION parameter
      --verbose          verbose mode