Web Servers for Embedded Systems
Many network enabled embedded devices do not have displays and configuration must be done via a webpage.
This is the case for modems and routers and possibly for IP cameras, networked printers…
With a webserver, there is no need to develop specific drivers and/or applications for computers connected to the device. You just need to write HTML/Javacript pages and possibly CGI scripts.
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. It’s 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 on of the other http servers.
Boa webserver 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 release 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 server (e.g. NAS, ARM web server) that require high performance.
License: revised BSD license.