minimal HTTP/HTTPS/1.1 server
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ebin
include
log
priv
servers
src
static
test
.edts
.gitignore
LICENSE
Makefile
README.md
brunhilde.conf
rebar.config

README.md

brunhilde (tested with Erlang OTP R19, R20)

alt tag

Serving many users concurrently is what brunhilde does for a living!

brunhilde is a minimal (~715 LOC) Erlang/OTP web server, designed for rapid prototyping and hackathons/coding competitions. As simple as possible, so that it can quickly be modified or debugged. It is not designed to provide high performance or be used in production.

Dependencies:

Usage:

To start brunhilde standalone, do:

make build start

To embed brunhilde in another OTP application, see: brunhilde_ext.

For an example of a small (but covering POST, GET, redirects, etc), see: musiklistan.

Dialyzer:

make dialyzer (requires existing PLT)

Running virtual servers/apps:

Virtual servers are defined in servers/ and have to use the rest_handler behaviour. Give a list of virtual servers to start in brunhilde.conf.

For example:

#{start_observer => false,
  start_debugger => false,
  use_reloader   => true,
  servers =>
   [ #{server_name   => battleship,
       instance_name => battleship_serv,
       port          => 28251,
       workers       => 10,
       transport     => http}

   , #{server_name   => helloworld,
       instance_name => helloworld_serv,
       port          => 5030,
       workers       => 5,
       transport     => http}

   , #{server_name   => helloworld,
       instance_name => helloworld_serv2,
       port          => 5031,
       workers       => 10,
       transport     => http}

   , #{server_name   => secure,
       instance_name => secure_serv,
       port          => 4430,
       workers       => 10,
       transport     => {https,
                        "cert.pem",
                        "privkey.pem",
                        "fullchain.pem"
                        }
      }
   ]}.

Supervisor tree:

alt tag