A proof of concept to demonstrate how nginx and Erlang play nicely together.
C Erlang
Latest commit 6aa2cce Jan 22, 2009 @ngerakines Adding license info


This is an experimental erlang extension for nginx.

Contributions are welcome. I don't claim to write beautiful c. The biggest thing you can do to help is to show me what I did wrong (nicely) so I can learn from it.


From the nginx source directory, configure nginx with the module included.

$ ./configure --add-module=/path/to/erlang_nginx
$ make
$ make install


$ erl -setcookie secret -sname handler@localhost
1> P = demo:start().

Running nginx and making a curl request ala

$ curl http://localhost/foobar

Results in this output in Erlang:

{Pid, Method, Uri}: {<8207.9.0>, 2, "/foo" ++ _}


location /app/ {


  • ngx_http_erlang_module.c (66) - Get this from nginx.
  • ngx_http_erlang_module.c (69) - Set this during the erlang message recieve loop.
  • ngx_http_erlang_module.c (82) - Add secret to config
  • ngx_http_erlang_module.c (88) - Add node name to config
  • ngx_http_erlang_module.c (89) - Add node host to config
  • ngx_http_erlang_module.c (97) - Send the headers and request body
  • ngx_http_erlang_module.c (103) - Set the registered process that is the handler in the config.
  • ngx_http_erlang_module.c (106) - Find a way to fail gracefully if a message isn't recieved within
  • ngx_http_erlang_module.c (108) - Set the timeout duration in config.
  • ngx_http_erlang_module.c (120) - Handle response tuple: {StatusCode, Headers, Body}
  • ngx_http_erlang_module.c (126) - Set status code from response tuple


This software is Open Source under the MIT license.