Comparison of web server software
Appearance
Web server software allows computers to act as web servers. The first web servers supported only static files, such as HTML (and images), but now they commonly allow embedding of server side applications.
Some web application frameworks include simple HTTP servers. For example the Django framework provides runserver
, and PHP has a built-in server. These are generally intended only for use during initial development. A production server will require a more robust HTTP front-end such as one of the servers listed here.
Overview
Server | Developed by | Software license | Last stable version | Latest release date |
---|---|---|---|---|
AOLserver | NaviSoft | Mozilla | 4.5.2 | 2012-09-19 (discontinued) |
Apache HTTP Server | Apache Software Foundation | Apache | 2.4.54 | 2022-06-08 |
Apache Tomcat | Apache Software Foundation | Apache | 10.0.27 | 2022-10-10 |
Boa | Jon Nelson and Larry Doolittle | GNU GPL | 0.94.13 | 2002-07-30 (discontinued) |
BusyBox httpd | Glenn Engel, Vladimir Oleynik, BusyBox Team | GNU GPL | 1.34.0 | 2020-08-19 |
Caddy | Matt Holt | Apache | 2.5.0 | 2022-04-25 |
Caudium | The Caudium Group | GNU GPL | 1.4.18 | 2012-02-24 |
CERN httpd | CERN, W3C, Tim Berners-Lee, Ari Luotonen and Henrik Frystyk Nielsen | MIT Copyright Statement with acknowledgement to CERN | 3.0A | 1996-07-15
(discontinued) |
Cherokee HTTP Server | Álvaro López Ortega | GNU GPL | 1.2.103 | 2013-04-21 |
GlassFish | Sun Microsystems, Oracle Corporation, since 2019 Eclipse Foundation | Eclipse Public License & GNU General Public License | 6.2.5 | 2022-02-13 |
Hiawatha | Hugo Leisink | GNU GPLv2 | 10.12 | 2021-03-25 |
HFS | Rejetto | GNU GPL | 2.3m | 2018-08-16 |
IBM HTTP Server | IBM | Non-free proprietary | 9.0.5.4 | 2020-06-12[1] |
Internet Information Services | Microsoft | Non-free proprietary | 10.0.17763.1 | 2018-10-02 |
Jetty | Eclipse Foundation | Apache | 11.0.6x | 2021-03-29 |
Jexus | Bing Liu | Non-free proprietary | 6.2.x | 2020 |
lighttpd | Jan Kneschke (Incremental) | BSD variant | 1.4.67 | 2022-09-17 |
LiteSpeed Web Server | LiteSpeed Technologies | Non-free proprietary | 5.4.8 | 2020-07-01 |
Mongoose | Cesanta Software | GNU GPLv2 / proprietary license | 6.18 | 2020-05-21 |
Monkey HTTP Server | Monkey Software | Apache | 1.6.9 | 2016-06-04 |
NaviServer | Various | Mozilla 1.1 | 4.99.23 | 2021-12-31 |
NCSA HTTPd | Robert McCool | Non-free proprietary | 1.5.2a | 1996-10-08 (discontinued) |
Nginx | NGINX, Inc. | BSD variant | 1.21.0 | 2021-05-25 |
OpenBSD httpd | Reyk Floeter | ISC | 5.8 | 2015-08-18 |
OpenLink Virtuoso | OpenLink Software | GNU GPL and proprietary versions | 8.3.3316 | 2020-03-10 |
Oracle HTTP Server | Oracle Corporation | Non-free proprietary | 12cR2 (12.2.1.4)[2] | 2021-02-??[3] |
Oracle iPlanet Web Server | Oracle Corporation | BSD | 7.0.27 | 2017-10-01 |
Oracle WebLogic Server | Oracle Corporation (formerly BEA Systems) |
Non-free proprietary | 14c (14.1.1.0) [2] | 2020-03-30 |
Resin Open Source | Caucho Technology | GNU GPLv3 / proprietary license | 4.0.65 | 2020-07-29 |
Resin Professional | Caucho Technology | Non-free proprietary | 4.0.65 | 2020-07-29 |
thttpd | Jef Poskanzer for ACME Laboratories | BSD variant | 2.29 | 2018-05-24 |
TUX web server | Ingo Molnár | GNU GPL | 3.2.6.18 | 2006-09-20 (discontinued) |
Wakanda Server | Wakanda | GNU AGPLv3 / proprietary license | 2.7.0 | 2019-04-29 (Discontinued) |
WEBrick | Ruby Community | BSD 2-clause | 1.6.0 | 2019-11-30 |
Xitami | iMatix Corporation | BSD | 5.0a0 | 2009-02-19 (discontinued) |
Yaws | Claes Wikström | BSD variant | 2.0.7 | 2019-07-14 |
Zeus Web Server | Zeus Technology | Non-free proprietary | 4.3r5 | 2010-01-13 (discontinued) |
Zope | Zope Corporation | Zope | 2.13.30 | 2020-02-14 |
Server | Developed by | Software license | Last stable version | Latest release date |
Features
Some features may be intentionally not included to web server to avoid featuritis. For example:
- TLS/HTTPS may be enabled with a separate stunnel daemon that terminates TLS and redirects raw HTTP packets to http daemon.
- NGINX and OpenBSD httpd authors decided not to include CGI interpretation but instead use FastCGI. For OpenBSD was developed a slowcgi gateway.
- BusyBox httpd doesn't have automatically generated directory listing but it may be implemented as a CGI script
Server | Security | Virtual hosting |
Dynamic content[a] | Runs in user or kernel space |
Administration console | Additional protocol support | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Basic access authenti- cation |
Digest access authenti- cation |
SSL/TLS https |
CGI | FCGI | SCGI | WSGI | Java Servlets |
SSI | ISAPI | SSJS | IPv6 | HTTP/2 | QUIC | HTTP/3 | ||||
AOLserver | Yes | No | Yes[b][c][d][4] | Yes | Yes | No | Unknown | No | No | Yes | Unknown | Unknown | user | Unknown | Unknown | Unknown | Unknown | Unknown |
Apache HTTP Server | Yes | Yes | Yes[e][c][5][f][6] | Yes | Yes | Yes | Yes | Yes[e] | No[g] | Yes | Yes[h] | Unknown | user | Yes[i] | Yes | Yes | Unknown | Unknown |
Apache Tomcat | Yes | Yes | Yes[j][7] | Yes | Yes | No | Unknown | No | Yes | Yes | No[k] | Unknown | user | Yes | Yes[l] | Yes | Unknown | Unknown |
Boa | No | No | Yes[m] | Yes | Yes | No | Unknown | No | No | No | No | No | user | Unknown | Yes | No | No | No |
BusyBox httpd | Yes | No | No | No | Yes | No | No | No | No | No[n] | No | No | user | No | Yes | No | No | No |
Caddy | Yes | No | Yes | Yes | Partial[o] | Yes | No | No | No | No[p] | No | No | user | No | Yes | Yes | Yes | Yes[q] |
Caucho Resin Server | Yes | Yes | paid version[c] | Yes | Yes | Yes | Unknown | No | Yes | Yes | No | Unknown | user | Yes | Yes | Unknown | Unknown | Unknown |
Caudium | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | No | Yes | Yes | Unknown | Unknown | user | Yes | Yes[r] | Unknown | Unknown | Unknown |
Cherokee HTTP Server | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Unknown | user | Yes | Yes[9] | Unknown | Unknown | Unknown |
HFS | Yes | No | No[10] | No | No | No | Unknown | No | No | No | Unknown | Unknown | user | Unknown | No | Unknown | Unknown | Unknown |
Hiawatha HTTP Server | Yes | Yes | Yes[s][11] | Yes | Yes | Yes | No | No | No | Yes | No | Unknown | user | Yes | Yes | No[12] | No[12] | No[12] |
IBM HTTP Server | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | No | No | Yes | No | Unknown | user | Yes | Yes | Unknown | Unknown | Unknown |
Internet Information Services | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No[t] | Yes | Yes | Yes | kernel and user[13] | Yes | Yes | Yes | Unknown | Unknown |
Jetty | Yes | Yes | Yes | Yes | Yes | Unknown | Unknown | No | Yes | Unknown | Unknown | Yes | user | Unknown | Unknown | Yes | Unknown | Unknown |
Jexus | No | No | Yes | Yes | No | Yes | No | No | No | No | No | Yes | user | Yes | No | Unknown | Unknown | Unknown |
lighttpd | Yes | Yes | Yes[c][14] | Yes | Yes | Yes | Yes | Yes | No[g] | Yes | No | No | user | No | Yes | Yes | No | No |
LiteSpeed Web Server | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | Yes | No[g] | Yes | No | Unknown | user | Yes | Yes | Yes | Yes | Yes[15] |
Mongoose | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | No | user | Yes | Yes | Unknown | Unknown | Unknown |
Monkey HTTP Server | Yes | No | Yes[s] | Yes | Yes | Yes | No | No | No | No | No | No | user | No | Yes | Unknown | Unknown | Unknown |
NaviServer | Yes | No | Yes | Yes | Yes | No | Unknown | No | No | Yes | Unknown | Unknown | user | Yes | Yes | Unknown | Unknown | Unknown |
NCSA HTTPd | Yes | Yes | Unknown | Partial[u] | Yes | Unknown | Unknown | No | No | Yes | No | No | user | No | No | No | No | No |
nginx | Yes | Yes (module) | Yes | Yes | No | Yes | Yes | Yes | No[16] | Yes | No | Unknown | user | Yes[17] | Yes[18] | Yes[19] | No | Yes[v] |
OpenBSD httpd | Yes | No | Yes | Yes | No | Yes | No | No | No | No | No | No | user | No | Yes | No | No | No |
OpenLink Virtuoso | Yes | Yes | Yes | Yes | No | No | No | No | Yes | Yes | No | No | user | Yes | No | No | Unknown | Unknown |
Oracle HTTP Server[21] | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | No | No | Yes | No | Unknown | user | Yes[w] | Yes | Unknown | Unknown | Unknown |
Oracle iPlanet Web Server | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | No | Yes | Yes | No | Yes | user | Yes | Yes | Unknown | Unknown | Unknown |
thttpd | Yes | Unknown | No | Yes | Yes | No | Unknown | No | No | No | No | Unknown | user | No | Yes | Unknown | Unknown | Unknown |
TUX web server | No | No | No | Yes | Yes | No | Unknown | No | No | No | No | Unknown | kernel | Unknown | Unknown | Unknown | Unknown | Unknown |
Wakanda Server | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | Yes | user | Yes | Yes | Unknown | Unknown | Unknown |
Xitami | Yes | Unknown | paid version | Yes | Yes | Unknown | Unknown | No | Unknown | Yes | Unknown | Unknown | user | Unknown | Unknown | Unknown | Unknown | Unknown |
Yaws | Yes | Unknown | Yes | Yes | Yes | Yes | Unknown | No | No | Yes | No | Unknown | user | Unknown | Yes | Unknown | Unknown | Unknown |
Zeus Web Server | Yes | Yes | Yes | Yes | Yes | Yes | Unknown | No | No[g] | Yes | Yes | Unknown | user | Yes | No | Unknown | Unknown | Unknown |
- ^ The "dynamic content" columns indicate whether the server itself implements the given feature. Other features may be available by delegation (e.g. Apache HTTP Server can delegate to Apache Tomcat for Servlet support).
- ^ support for using RSA BSAFE
- ^ a b c d support for using openSSL
- ^ support for using Network Security Services
- ^ a b via modules
- ^ support for using GnuTLS
- ^ a b c d This server implements AJP; compatible third-party Servlet containers can be integrated to provide seamless Servlet support.
- ^ This server can use the mod_isapi module for this support.
- ^ via Geronimo
- ^ support for using Java Secure Socket Extension
- ^ While Tomcat does not implement ISAPI directly, it integrates well with Apache mod_jk which contains an ISAPI module for this purpose.
- ^ Requires a JVM and OS that support IPv6.
- ^ with external patch
- ^ Implemented as CGI script httpd_ssi
- ^ CGI implemented for WebSocket connections
- ^ Same capabilities as SSI available with templates
- ^ The experimental_http3 option "enables experimental draft HTTP/3 support...This option will go away in the future".[8]
- ^ Version 1.4.8 of Caudium mentions IPv6 support but this is not explicitly specified on the official website. Maintainers have been sent a Documentation Update Query; please remove this warning notice when they update their website
- ^ a b support for using PolarSSL
- ^ Servlet Engines are supported via isapi_redirect.
- ^ Due to lack of support for HTTP/1.1, name based virtual hosts are not fully implemented.
- ^ There is currently an nginx-quic special build for this.[20]
- ^ via Enterprise Manager
Operating system support
Server | Windows | Linux | macOS | BSD | Solaris | eComStation | OpenVMS | AIX | IBM i | z/OS | HP-UX |
---|---|---|---|---|---|---|---|---|---|---|---|
AOLserver | No | Yes | Yes | Yes | Yes | No | No | Unknown | No | Unknown | Unknown |
Apache HTTP Server | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Apache Tomcat | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
Boa | Unknown | Yes | No | Yes | Unknown | No | No | Unknown | No | Unknown | Unknown |
BusyBox httpd | No[22] | Yes | Unknown | Yes | No | No | No | No | No | No | No |
Caddy | Yes | Yes | Yes | Yes | Yes | No | No | Unknown | Unknown | Unknown | Unknown |
Caucho Resin Server | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Caudium[23] | No | Yes | Yes | Yes | Yes | No | No | Yes | No | Unknown | Unknown |
Cherokee HTTP Server | No[24] | Yes | Yes | Yes | Yes | No | No | Unknown | No | Unknown | Unknown |
HFS | Yes | No | No | No | No | No | No | No | No | No | No |
Hiawatha | with Cygwin[25] | Yes[25] | Yes[25] | Yes[25] | Yes[25] | No | No | No | No | No | No |
IBM HTTP Server | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes |
Internet Information Services | Yes | No | No | No | No | No | No | No | No | No | No |
Jetty (Java) | Yes | Yes | Yes | Yes | Yes | Yes | No | Unknown | No | Yes | Unknown |
Jexus | No | Yes | No | Yes | Unknown | No | No | No | No | No | No |
lighttpd | Yes (Cygwin) |
Yes | Yes | Yes | Yes | No | No | Yes | No | No | Yes |
LiteSpeed Web Server | No | Yes | Yes | Yes | Yes | No | No | Unknown | No | Unknown | Unknown |
Mongoose | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes |
Monkey HTTP Server | No | Yes | Yes | No | No | No | No | No | No | No | No |
NaviServer | Yes | Yes | Yes | Yes | Yes | Unknown | Unknown | Yes | No | Unknown | Unknown |
NCSA HTTPd | Unknown | Yes | No | Yes | Yes | Yes | No | Unknown | No | Unknown | Yes |
nginx | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | Yes |
OpenLink Virtuoso | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | Yes |
Oracle HTTP Server | Yes | Yes | No | Unknown | Yes | No | No | Yes | No | Unknown | Unknown |
Oracle iPlanet Web Server | Yes | Yes | No | No | Yes | No | No | Yes | No | No | Yes |
thttpd | Yes (Cygwin) |
Yes | Yes | Yes | Yes | No | No | Unknown | No | Unknown | Unknown |
TUX web server | No | Yes | No | No | No | No | No | No | No | No | No |
Wakanda Server | Yes | Yes (via libbsd) |
Yes | Yes | Unknown | No | No | No | No | No | No |
Xitami | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Unknown | Yes |
Yaws | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | Unknown | Unknown |
See also
References
- ^ "Recommended fixes for IBM HTTP Server". www.ibm.com. IBM. Retrieved 11 August 2020.
- ^ a b "Oracle Web Tier Downloads". www.oracle.com. Oracle. Retrieved 11 August 2020.
- ^ "Release Notes for Oracle HTTP Server". Oracle Help Center. Retrieved 2022-10-09.
- ^ "Nsssl - AOLserver Wiki". Retrieved 2014-07-04.
- ^ "Apache Module mod_ssl". Retrieved 2014-07-04.
- ^ "mod_gnutls". Retrieved 2014-07-04.
- ^ "Apache Tomcat 6.0 - SSL Configuration HOW-TO". Retrieved 2014-07-04.
- ^ "Global options". caddyserver.com. Retrieved 11 August 2020.
- ^ Installation guide shows server status with "IPv6 enabled"
- ^ HFS: Secure your server
- ^ Leisink, Hugo. "Features - Hiawatha webserver". hiawatha-webserver.org. Retrieved 2014-07-04.
- ^ a b c "Scaling down the project". www.hiawatha-webserver.com. Retrieved 11 August 2020.
- ^ "States that the HTTP protocol stack http.sys runs in kernel space, while the rest of the software runs in user space". Technet2.microsoft.com. Archived from the original on 2008-04-17. Retrieved 2012-02-28.
- ^ "Secure HTTP". redmine.lighttpd.net. Retrieved 2014-12-09.
- ^ ""LiteSpeed Web Server v5.4 is Here!"". Retrieved 11 November 2019.
- ^ "JavaServers". Wiki.nginx.org. Retrieved 2013-08-15.
- ^ "Nginx Admin Installation Instruction". NginxCP.com. Retrieved 2013-08-15.
- ^ Ghosh, Soumik (2010-09-05). "Enable IPv6 support". Nginx Library. Retrieved 2013-08-15.
- ^ "nginx changelog". www.nginx.com. 2015-09-22.
- ^ "Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3". www.nginx.com. Retrieved 11 August 2020.
- ^ "Feature Overview - 10g R2 (10.1.2)" (PDF). Oracle.com. 2010-09-07. Retrieved 2012-02-28.
- ^ "BusyBox on Windows". "The Windows native build is currently broken."
- ^ "Webserver FAQs". Caudium. Archived from the original on 2002-11-14. Retrieved 2012-02-28.
- ^ John Poole. "Installation on Windows". cherokee-project.com. Retrieved 2014-11-23. "The Windows native build is currently broken."
- ^ a b c d e Hugo Leisink. "About - Hiawatha webserver". hiawatha-webserver.org. Retrieved 2014-06-21.