About Monkey HTTP Server

Monkey is a small, fast and lightweight open source Web Server for GNU/Linux. It has been designed with focus in embedded devices, therefore its scalable by nature having a low memory and CPU consumption and an excellent performance.

Monkey is properly supported on ARM, x86 and x64, being able to work in any architecture and device capable to run a Linux Kernel.

Features

  • HTTP/1.1 compliant
  • IPv4 & IPv6
  • Virtual Hosts
  • Asynchronous networking model (event-driven)
  • Indented configuration
  • Plugins Support
  • C API Interface
  • Other features through base plugins:
    • CGI
    • FastCGI
    • SSL
    • Security
    • Log writter
    • Directory Listing
    • Shell: Command line


How it Works internal architecture

Monkey uses an hybrid mechanism composed by a fixed number of threads being each one capable to attend thousands of clients thanks to the event-driven model based in asyncrhonous sockets.

The interaction between the scheduler and each worker thread is lock free, avoiding race conditions and exposing a huge performance compared to other available options. It also takes the most of the Linux Kernel to optimize the work using specific system calls based on zero-copy strategy.


Plugins extending the core features

A good and flexible architecture is one of our goals. Monkey have been designed to keep most of the HTTP functionalities in the core and make it extensible through external plugins. Its core is small, depending of the compiler version used, the binary size could be around 60KB and 300KB in runtime. The current plugins are distributed with the sources:

  • Liana: networking communication layer
  • Cheetah! Shell: Yes!, Monkey has a shell!
  • Directory Listing
  • Security: access restriction to the service by network address, subnets and request filters
  • Palm


Just for Linux kernel dependent

Write a portable piece of software involves to dedicate extra time and focus on each platform features and problems. Linux is a fast and stable operative system which provides specific and unique system calls to improve the performance of high demand server softwares, so Monkey development is focused in Linux Kernel to take the most of it specific features. Monkey only requires Linux >= 2.6.29.


Benchmarks againts other web servers

Monkey have demostrated consume less memory and CPU than other web servers available, as well have a better performance due to it design. More information will be shared soon.


Sponsors who support us

Monkey is build by volunteers around the world and getting an extra support from OSUOSL.

Monkey Project could not be possible without the infraestructure provided by the Open Source Lab from the Oregon State University, well known as OSUOSL, we really appreciate all support provided!

License legal

Monkey HTTP Server is licensed under the GNU Library General Public License v2 (LGPLv2).

In brief: This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License v2 as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Additional exception:

  • You are not allowed to change or hide the original server signature in the HTTP response headers.

For any extra requirement for commercial support or special licenses, please write us to embedded@monkey-project.com.


Logo Copyright

Our Monkey Logo is under the Creative Commons License, you are just allowed to use it to promote Monkey HTTP Server project without any commercial purpose. FLOSS communities looking for merchandising can write us to require special permissions.

Creative Commons License
Monkey HTTP Server Logo by Eduardo Silva is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License