Web Server Overview

To obtain an WebInterface to administer OpenWrt, see webinterface.overview.

Web server Packages in OpenWrt repository

Name Size (KB) Dependency tree Dep. size (KB) License Description
Apache 404 libc
→libgcc
libapr
→libpthread
→librt
→ libuuid
libaprutil
→libexpat
→libsqlite3
libpcre
libopenssl
→zlib
unixodbc
→libltdl
224
→31
66
→31
→6
→ 6
54
→5
→290
76
592
→40
188
→13
Apache 2.0 The Apache Web Server is a powerful and flexible HTTP/1.1 compliant web server. Originally designed as a replacement for the NCSA HTTP Server, it has grown to be the most popular web server on the Internet. Note that Apache is a memory hog and may not be suitable for embedded systems. The opkg package contains the Apache web server and utility programs.
Note that Apache's main configuration file is httpd.conf, with the same name and location as Busybox's httpd. Therefore, if you compile httpd in Busybox, take care that you don't include Apache into your image as well.
axhttpd 7 libc
→libgcc
libaxtls
224
→31
35
BSD The axTLS embedded SSL project is a highly configurable client/server TLSv1 SSL library designed for platforms with small memory requirements. It comes with a small HTTP/HTTPS server and additional test tools. http://axtls.sourceforge.net/
Hiawatha 51 libc
→libgcc
libpthread
zlib
224
→31
30
GPLv2 Hiawatha has been written with security in mind. This resulted in a highly secure webserver in both code and features. Hiawatha can stop SQL injections, XSS and CSRF attacks and exploit attempts. In addition, it is designed to be lightweight.
Busybox-httpd libc
→libgcc
224
→31
GPLv2 httpd is part of Busybox. Note that OpenWrt's main releases do not compile Busybox with httpd anymore. Beware the path of the configuration file is the same as Apache's.
Lighttpd 83 libc
→libgcc
libopenssl
→zlib
libpcre
libpthread
librt
224
→31
592
→40
77
31
6
rev BSD A flexible and lightweight web server. It is lightweight, but still with speed, scalability, functionality and standards compliance in mind.\\Features FastCGI, SCGI and CGI \\Does support Lua in process, but this is currently not implemented as an opkg package (?)
mini-httpd 21 libc
→libgcc
224
→31
GPLv3+ mini-httpd is a small HTTP server. Its performance is not great, but for low or medium traffic sites it's quite adequate. It implements all the basic features of an HTTP server, including:
- GET, HEAD, and POST methods
- CGI
- Basic authentication
- Security against ".." filename snooping
- The common MIME types
- Trailing-slash redirection
- index.html, index.htm, index.cgi
- Directory listings
- Multihoming / virtual hosting - Standard logging
- Custom error pages
It can also be configured to do IPv6.
mini-httpd-matrixssl 24 libc
→libgcc
libmatrixssl
→libpthread
224
→31
39
→30
A mini-httpd package built with SSL/HTTPS using MatrixSSL.
mini-httpd-openssl 23 libc
→libgcc
libopenssl
→zlib
224
→31
592
→40
A mini-httpd package built with SSL/HTTPS using OpenSSL.
nginx 191 libc
→libgcc
libpcre
libopenssl
zlib
libpthread
224
→31
77
592
40
30
2-clause BSD-like license Nginx is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server.
uhttpd 19 libc
→libgcc
libubox
224
→31
14
Mixed
GPLv2
Apache 2.0
Single threaded HTTP server written from scratch by OpenWrt/LuCI developers. Built as a general purpose web server, it is not merely intended for running the OpenWrt router's web interface provided by luci.
Support for TSL through the CyaSSL Library (using the uhttpd-mod-tls package), supports CGI
Also supports running Lua in-process, which can speed up Lua CGI scripts.
  • This table is not a full overview of the different features, but focusses on the OpenWrt package implementation. For a full feature comparison, see the Wikipedia article.
  • Not listed is the http.owhttpd OWFS http server.
  • To extend server functionality see LAMP to install an entire LAMP stack.
  • Note that all servers are written in C and therefore depend on the libc package.
  • To give a slight idea of the complexity and functionality, approximate sizes in kilobyte of the opkg packages (.ipk extension) are given for each server and their dependencies (a recursive trail up to two nodes, listing dependencies only once). Note that this does not take into account modularity. Some packages may have many enhancements in the form of other packages. For example, Lighttpd is very modular, with extended functionality relegated to separate packages, whereas Apache is not. To obtain a list of plugins for a server you can usually use opkg, as any addons mostly have the server name as prefix. For example, to list all of the Lighttpd addons run opkg list lighttpd*.

Differences

Which WebServer shall I choose? Differences may be:

  • The version of the Hypertext Transfer Protocol (HTTP) supported, e.g. Hiawatha documents its features nicely;
  • Resource usage (memory, CPU time or storage);
  • Scalability;
  • The required features and the availability of a certain needed module or plugin.

Note that this page shall not be a list of general web server software, but only those available for OpenWRT via opkg. Other commonly used web servers can be found in Wikipedia:

You can obtain an incomplete list of packages related to HTTP by typing opkg list | awk '/http/ {print $0}'

Stuff

Back to top

doc/howto/http.overview.txt · Last modified: 2014/07/08 11:43 by theoradicus