I’ve already posted a blog post about mathopd for ARM no-mmu targets as this HTTP server is ideal for uCLinux since it does not fork.
Today, I’ll list some other HTTP servers that may also be used with embedded processors.
thttpd is a lightweight HTTP server implementing the HTTP/1.1 (minimum) and simple to configure and run. Its executable size is 88K. The description says it does not fork, but fork is called in the source code, so I do not know what that means…
It’s is very portable and it can compiles cleanly on most Unix-like operating systems. It’s about as fast as full-featured servers and much faster on very high loads (because reduces the server load for the same amount of work). See benchmark results (a bit outdated) for details.
You can also enable httpd in BusyBox. It’s very tiny (only adds about 9 K to BusyBox 1.5). It still has quite a few features including CGI and HTTP authentication. It can also support php by adding /usr/bin/php5-cgi. You should probably try this server to see if it fits your needs before choosing one of the other HTTP servers.
Boa web server is designed to be simple, fast and secure. However, it has not been developed since 2005. It used to be popular in embedded systems (especially uClinux) since it does not need to fork.
lighttpd (pronounced lighty) is a low footprint server good at managing high loads. It’s more powerful than the other solution above and is still actively developed. The latest version lighttpd 1.4.29 has been released on the 3rd of July 2011. A 2007 benchmark shows better performance than Apache and LiteSpeed. That’s probably why lighttpd also powers several popular Web 2.0 sites like YouTube, Wikipedia, and meebo.
With a small memory footprint compared to other web servers such as Apache, effective management of the CPU-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more) lighttpd can be used in embedded servers (e.g. NAS, ARM web server) that require high performance.
License: revised BSD license.