FAQ

Page Discussion Edit History

NgxSCGIModule

(Redirected from NginxNgxSCGIModule)

Contents

[edit] SCGI

<rst> Introduction

[edit] ==

mod_scgi is an implementation of the `Simple Common Gateway Interface <http://python.ca/scgi/protocol.txt>`_ for the `Nginx <http://nginx.net>`_ web server.

Nginx is a fast asynchronous HTTP server.


Installation

[edit] ==

mod_scgi has been tested with Nginx 0.5.35. As of 31-May-09, it does not build against Nginx 0.7.59

Download the Nginx sources from http://nginx.net/ and unpack it.

The sources of mod_scgi can be downloaded from a `Mercurial <http://www.selenic.com/mercurial/wiki/>`_ repository: http://hg.mperillo.ath.cx/nginx/mod_scgi/

At the moment there is no stable release, so you need to download the latest revision (*tip*) or the latest *tag*.

The *tip* can be downloaded via the Mercurial web interface: http://hg.mperillo.ath.cx/nginx/mod_scgi/archive/tip.tar.gz

or cloning the repository: ::

 hg clone http://hg.mperillo.ath.cx/nginx/mod_scgi/

The latest *tag* can be found from: http://hg.mperillo.ath.cx/nginx/mod_scgi/tags

To build Nginx, change to the directory which contains the Nginx sources, and run the configuration script making sure to add the path to the mod_scgi sources using the --add-module option. It is recommended to enable debugging. ::

 $ ./configure --add-module=/path/to/mod_scgi/ --with-debug

Nginx will use as default prefix path the directory `/usr/local/nginx`.

Now you can build and install the software: ::

 $ make

and as root: ::

 $ make install


Notes

[edit] =

This module is still under development.

The module is mainly an adaptation of the existing `ngx_http_fastcgi_module`, with some code (the HTTP status line and headers parsing) from the `ngx_http_proxy_module`.


In the current version `SCRIPT_NAME` and `PATH_INFO` are not defined.

The current implementation also only supports SCGI response that conforms to HTTP 1.0; this means that the response must start with an HTTP 1.x status line (like `HTTP 1.0 200 OK`) and not by using the `Status` header.


BUGS

[edit] ==

This implementation is not fully conform to the SCGI protocol.

The SCGI specification states: ::

 Duplicate names are not allowed in the headers

however Nginx does not combines multiple headers.


Example

[edit] =

Here is a sample configuration: ::

   location  /scgi {
       scgi_pass   127.0.0.1:4000;
       include     conf/scgi_vars;
       scgi_var    SCRIPT_NAME  /scgi;
       scgi_var    PATH_INFO    /xxx;
   }

note the inclusion of the `conf/scgi_vars` file.

This file must be copied to the nginx `$prefix/conf` directory by hand. </rst>