Comparison of web server software

Last updated

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.

Contents

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

ServerDeveloped by Software license Last stable versionLatest release date
AOLserver NaviSoft Mozilla 4.5.22012-09-19 (discontinued)
Apache HTTP Server Apache Software Foundation Apache 2.4.582023-10-19
Apache Tomcat Apache Software Foundation Apache 10.1.152023-10-16
Boa Jon Nelson and Larry DoolittleGNU GPL0.94.132002-07-30 (discontinued)
BusyBox httpd Glenn Engel, Vladimir Oleynik, BusyBox TeamGNU GPL1.36.12023-05-18
Caddy Matt Holt Apache 2.6.42023-02-14
Caudium The Caudium GroupGNU GPL1.4.182012-02-24
CERN httpd CERN, W3C, Tim Berners-Lee, Ari Luotonen and Henrik Frystyk Nielsen MIT Copyright Statement with acknowledgement to CERN3.0A1996-07-15

(discontinued)

Cherokee HTTP Server Álvaro López OrtegaGNU GPL1.2.1032013-04-21
GlassFish Sun Microsystems, Oracle Corporation, since 2019 Eclipse Foundation Eclipse Public License & GNU General Public License 6.2.52022-02-13
Hiawatha Hugo LeisinkGNU GPLv211.52023-10-13
HFS RejettoGNU GPL2.3m2018-08-16
IBM HTTP Server IBM Non-free proprietary 9.0.5.172023-09-19
Internet Information Services Microsoft Non-free proprietary10.0.17763.12018-10-02
Jetty Eclipse Foundation Apache 12.0.22023-10-10
JexusBing LiuNon-free proprietary6.2.x2020
lighttpd Jan Kneschke (Incremental) BSD variant1.4.762024-04-12
LiteSpeed Web Server LiteSpeed Technologies GNU GPLv3 / proprietary license6.1.22023-05-24
Mongoose Cesanta Software GNU GPLv2 / proprietary license7.132024-02-21
Monkey HTTP Server Monkey Software Apache 1.6.92016-06-04
NaviServer VariousMozilla 1.14.99.252023-05-01
NCSA HTTPd Robert McCool Non-free proprietary1.5.2a1996-10-08 (discontinued)
Nginx NGINX, Inc. BSD variant1.25.42024-03-14
OpenBSD httpdReyk Floeter ISC 7.42023-10-16
OpenLink Virtuoso OpenLink SoftwareGNU GPL and proprietary versions8.3.33292023-09-01
Oracle HTTP Server Oracle Corporation Non-free proprietary12cR2 (12.2.1.4) [1] 2021-02-?? [2]
Oracle iPlanet Web Server Oracle Corporation BSD 7.0.272017-10-01
Oracle WebLogic Server Oracle Corporation
(formerly BEA Systems)
Non-free proprietary14c (14.1.1.0) [1] 2020-03-30
Resin Open Source Caucho Technology GNU GPLv3 / proprietary license4.0.662021-12-08
Resin Professional Caucho TechnologyNon-free proprietary4.0.662021-12-08
thttpd Jef Poskanzer for ACME Laboratories BSD variant2.292018-05-24
TUX web server Ingo Molnár GNU GPL3.2.6.182006-09-20 (discontinued)
Wakanda ServerWakanda GNU AGPLv3 / proprietary license2.7.02019-04-29 (Discontinued)
WEBrick Ruby Community BSD 2-clause1.8.12023-01-27
Xitami iMatix Corporation BSD 5.0a02009-02-19 (discontinued)
Yaws Claes Wikström BSD 3 clause 2.1.12022-02-02
Zeus Web Server Zeus Technology Non-free proprietary4.3r52010-01-13 (discontinued)
Zope Zope Corporation Zope 2.13.302020-02-14
ServerDeveloped bySoftware licenseLast stable versionLatest release date

Features

Some features may be intentionally not included to web server to avoid featuritis. For example:

ServerSecurity Virtual
hosting
Dynamic content [lower-alpha 1] Runs in user
or kernel space
Administration consoleAdditional 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 YesNoYes [lower-alpha 2] [lower-alpha 3] [lower-alpha 4] [3] YesYesNoUn­knownNoNoYesUn­knownUn­knownuserUn­knownUn­knownUn­knownUn­knownUn­known
Apache HTTP Server YesYesYes [lower-alpha 5] [lower-alpha 3] [4] [lower-alpha 6] [5] YesYesYesYesYes [lower-alpha 5] No [lower-alpha 7] YesYes [lower-alpha 8] Un­knownuserYes [lower-alpha 9] YesYesNoNo
Apache Tomcat YesYesYes [lower-alpha 10] [6] YesYesNoUn­knownNoYesYesNo [lower-alpha 11] Un­knownuserYesYes [lower-alpha 12] YesUn­knownUn­known
Boa NoNoYes [lower-alpha 13] YesYesNoUn­knownNoNoNoNoNouserUn­knownYesNoNoNo
BusyBox httpd YesNoNoNoYesNoNoNoNoNo [lower-alpha 14] NoNouserNoYesNoNoNo
Caddy YesNoYesYesPartial [lower-alpha 15] YesNoNoNoNo [lower-alpha 16] NoNouserNoYesYesYesYes [lower-alpha 17]
Caucho Resin Server YesYespaid version [lower-alpha 3] YesYesYesUn­knownNoYesYesNoUn­knownuserYesYesUn­knownUn­knownUn­known
Caudium YesYesYesYesYesYesUn­knownNoYesYesUn­knownUn­knownuserYesYes [lower-alpha 18] Un­knownUn­knownUn­known
Cherokee HTTP Server YesYesYesYesYesYesYesYesNoYesNoUn­knownuserYesYes [8] Un­knownUn­knownUn­known
HFS YesNoNo [9] NoNoNoUn­knownNoNoNoUn­knownUn­knownuserUn­knownNoUn­knownUn­knownUn­known
Hiawatha HTTP Server YesYesYes [lower-alpha 19] [10] YesYesYesNoNoNoYesNoUn­knownuserYesYesNo [11] No [11] No [11]
IBM HTTP Server YesYesYesYesYesYesUn­knownNoNoYesNoUn­knownuserYesYesUn­knownUn­knownUn­known
Internet Information Services YesYesYesYesYesYesYesNoNo [lower-alpha 20] YesYesYeskernel and user [12] YesYesYesUn­knownUn­known
Jetty YesYesYesYesYesUn­knownUn­knownNoYesUn­knownUn­knownYesuserUn­knownUn­knownYesUn­knownUn­known
JexusNoNoYesYesNoYesNoNoNoNoNoYesuserYesNoUn­knownUn­knownUn­known
lighttpd YesYesYes [lower-alpha 3] [13] YesYesYesYesYesNo [lower-alpha 7] YesNoNouserNoYesYesNoNo
LiteSpeed Web Server YesYesYesYesYesYesNoYesNo [lower-alpha 7] YesNoUn­knownuserYesYesYesYesYes [14]
Mongoose YesYesYesYesYesNoNoNoNoYesNoNouserYesYesUn­knownUn­knownUn­known
Monkey HTTP Server YesNoYes [lower-alpha 19] YesYesYesNoNoNoNoNoNouserNoYesUn­knownUn­knownUn­known
NaviServer YesNoYesYesYesNoUn­knownNoNoYesUn­knownUn­knownuserYesYesUn­knownUn­knownUn­known
NCSA HTTPd YesYesUn­knownPartial [lower-alpha 21] YesUn­knownUn­knownNoNoYesNoNouserNoNoNoNoNo
nginx YesYes (module)YesYesNoYesYesYesNo [15] YesNoUn­knownuserNoYes [16] Yes [17] YesYes
OpenBSD httpdYesNoYesYesNoYesNoNoNoNoNoNouserNoYesNoNoNo
OpenLink Virtuoso YesYesYesYesNoNoNoNoYesYesNoNouserYesNoNoUn­knownUn­known
Oracle HTTP Server [18] YesYesYesYesYesYesUn­knownNoNoYesNoUn­knownuserYes [lower-alpha 22] YesUn­knownUn­knownUn­known
Oracle iPlanet Web Server YesYesYesYesYesYesUn­knownNoYesYesNoYesuserYesYesUn­knownUn­knownUn­known
thttpd YesUn­knownNoYesYesNoUn­knownNoNoNoNoUn­knownuserNoYesUn­knownUn­knownUn­known
TUX web server NoNoNoYesYesNoUn­knownNoNoNoNoUn­knownkernelUn­knownUn­knownUn­knownUn­knownUn­known
Wakanda ServerYesYesYesYesNoNoNoNoNoNoNoYesuserYesYesUn­knownUn­knownUn­known
Xitami YesUn­knownpaid versionYesYesUn­knownUn­knownNoUn­knownYesUn­knownUn­knownuserUn­knownUn­knownUn­knownUn­knownUn­known
Yaws YesUn­knownYesYesYesYesUn­knownNoNoYesNoUn­knownuserUn­knownYesUn­knownUn­knownUn­known
Zeus Web Server YesYesYesYesYesYesUn­knownNoNo [lower-alpha 7] YesYesUn­knownuserYesNoUn­knownUn­knownUn­known
  1. 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).
  2. support for using RSA BSAFE
  3. 1 2 3 4 support for using openSSL
  4. support for using Network Security Services
  5. 1 2 via modules
  6. support for using GnuTLS
  7. 1 2 3 4 This server implements AJP; compatible third-party Servlet containers can be integrated to provide seamless Servlet support.
  8. This server can use the mod_isapi module for this support.
  9. via Geronimo
  10. support for using Java Secure Socket Extension
  11. While Tomcat does not implement ISAPI directly, it integrates well with Apache mod_jk which contains an ISAPI module for this purpose.
  12. Requires a JVM and OS that support IPv6.
  13. with external patch
  14. Implemented as CGI script httpd_ssi
  15. CGI implemented for WebSocket connections
  16. Same capabilities as SSI available with templates
  17. The experimental_http3 option "enables experimental draft HTTP/3 support...This option will go away in the future". [7]
  18. 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
  19. 1 2 support for using PolarSSL
  20. Servlet Engines are supported via isapi_redirect.
  21. Due to lack of support for HTTP/1.1, name based virtual hosts are not fully implemented.
  22. via Enterprise Manager

Operating system support

ServerWindowsLinuxmacOSBSDSolariseComStationOpenVMSAIXIBM iz/OSHP-UX
AOLserver NoYesYesYesYesNoNoUn­knownNoUn­knownUn­known
Apache HTTP Server YesYesYesYesYesYesYesYesYesYesYes
Apache Tomcat YesYesYesYesYesNoYesYesYesYesYes
Boa Un­knownYesNoYesUn­knownNoNoUn­knownNoUn­knownUn­known
BusyBox httpd No [19] YesUn­knownYesNoNoNoNoNoNoNo
Caddy YesYesYesYesYesNoNoUn­knownUn­knownUn­knownUn­known
Caucho Resin Server YesYesYesYesYesYesYesYesYesYesYes
Caudium [20] NoYesYesYesYesNoNoYesNoUn­knownUn­known
Cherokee HTTP Server No [21] YesYesYesYesNoNoUn­knownNoUn­knownUn­known
HFS YesNoNoNoNoNoNoNoNoNoNo
Hiawatha with Cygwin [22] Yes [22] Yes [22] Yes [22] Yes [22] NoNoNoNoNoNo
IBM HTTP Server YesYesNoNoYesNoNoYesYesYesYes
Internet Information Services YesNoNoNoNoNoNoNoNoNoNo
Jetty (Java) YesYesYesYesYesYesNoUn­knownNoYesUn­known
JexusNoYesNoYesUn­knownNoNoNoNoNoNo
lighttpd Yes
(Cygwin)
YesYesYesYesNoNoYesNoNoYes
LiteSpeed Web Server NoYesYesYesYesNoNoUn­knownNoUn­knownUn­known
Mongoose YesYesYesYesYesNoYesYesYesNoYes
Monkey HTTP Server NoYesYesNoNoNoNoNoNoNoNo
NaviServer YesYesYesYesYesUn­knownUn­knownYesNoUn­knownUn­known
NCSA HTTPd Un­knownYesNoYesYesYesNoUn­knownNoUn­knownYes
nginx YesYesYesYesYesNoNoYesNoNoYes
OpenLink Virtuoso YesYesYesYesYesNoNoYesNoNoYes
Oracle HTTP Server YesYesNoUn­knownYesNoNoYesNoUn­knownUn­known
Oracle iPlanet Web Server YesYesNoNoYesNoNoYesNoNoYes
thttpd Yes
(Cygwin)
YesYesYesYesNoNoUn­knownNoUn­knownUn­known
TUX web server NoYesNoNoNoNoNoNoNoNoNo
Wakanda ServerYesYes
(via libbsd)
YesYesUn­knownNoNoNoNoNoNo
Xitami YesYesYesYesYesYesYesYesNoUn­knownYes
Yaws YesYesYesYesYesNoNoYesNoUn­knownUn­known

See also

Related Research Articles

<span class="mw-page-title-main">Apache HTTP Server</span> Open-source web server software

The Apache HTTP Server is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. It is developed and maintained by a community of developers under the auspices of the Apache Software Foundation.

In computing, Common Gateway Interface (CGI) is an interface specification that enables web servers to execute an external program to process HTTP or HTTPS user requests.

In web applications, a rewrite engine is a software component that performs rewriting on URLs, modifying their appearance. This modification is called URL rewriting. It is a way of implementing URL mapping or routing within a web application. The engine is typically a component of a web server or web application framework. Rewritten URLs are used to provide shorter and more relevant-looking links to web pages. The technique adds a layer of abstraction between the files used to generate a web page and the URL that is presented to the outside world.

Server Side Includes (SSI) is a simple interpreted server-side scripting language used almost exclusively for the World Wide Web. It is most useful for including the contents of one or more files into a web page on a web server, using its #include directive. This could commonly be a common piece of code throughout a site, such as a page header, a page footer and a navigation menu. SSI also contains control directives for conditional features and directives for calling external programs. It is supported by Apache, LiteSpeed, nginx, IIS as well as W3C's Jigsaw. It has its roots in NCSA HTTPd.

lighttpd

lighttpd is an open-source web server optimized for speed-critical environments while remaining standards-compliant, secure and flexible. It was originally written by Jan Kneschke as a proof-of-concept of the c10k problem – how to handle 10,000 connections in parallel on one server, but has gained worldwide popularity. Its name is a portmanteau of "light" and "httpd".

The Web Server Gateway Interface is a simple calling convention for web servers to forward requests to web applications or frameworks written in the Python programming language. The current version of WSGI, version 1.0.1, is specified in Python Enhancement Proposal (PEP) 3333.

mod_jk is an Apache module used to connect the Tomcat servlet container with web servers such as Apache, iPlanet, Sun ONE and even IIS using the Apache JServ Protocol. The mod_proxy_ajp module performs a similar function to this module, while being integrated into the mod_proxy framework.

<span class="mw-page-title-main">HTTP compression</span> Capability that can be built into web servers and web clients

HTTP compression is a capability that can be built into web servers and web clients to improve transfer speed and bandwidth utilization.

The Apache JServ Protocol (AJP) is a binary protocol that can proxy inbound requests from a web server through to an application server that sits behind the web server. AJP is a highly trusted protocol and should never be exposed to untrusted clients, which could use it to gain access to sensitive information or execute code on the application server.

Oracle HTTP Server (OHS) is a web server based on the Apache HTTP Server, created by the Oracle Technology Network. The web server is based on Apache version 2.2.13. OHS, like Apache 2.2, includes support for IPv6.

Hiawatha was a free and open source cross-platform web server developed by Hugo Leisink.

Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Russian developer Igor Sysoev and publicly released in 2004. Nginx is free and open-source software, released under the terms of the 2-clause BSD license. A large fraction of web servers use Nginx, often as a load balancer.

Python Paste, often simply called paste, is a set of utilities for web development in Python. Paste has been described as "a framework for web frameworks".

The Online Certificate Status Protocol (OCSP) stapling, formally known as the TLS Certificate Status Request extension, is a standard for checking the revocation status of X.509 digital certificates. It allows the presenter of a certificate to bear the resource cost involved in providing Online Certificate Status Protocol (OCSP) responses by appending ("stapling") a time-stamped OCSP response signed by the CA to the initial TLS handshake, eliminating the need for clients to contact the CA, with the aim of improving both security and performance.

<span class="mw-page-title-main">Web server directory index</span> Index page of a websites directory

When an HTTP client requests a URL that points to a directory structure instead of an actual web page within the directory structure, the web server will generally serve a default page, which is often referred to as a main or "index" page.

<span class="mw-page-title-main">Slowloris (computer security)</span> Software for executing a denial-of-service attack

Slowloris is a type of denial of service attack tool which allows a single machine to take down another machine's web server with minimal bandwidth and side effects on unrelated services and ports.

mod_ssl is an optional module for the Apache HTTP Server. It provides strong cryptography for the Apache v1.3 and v2 webserver via the Secure Sockets Layer and Transport Layer Security cryptographic protocols by the help of the Open Source SSL/TLS toolkit OpenSSL.

SPDY is an obsolete open-specification communication protocol developed for transporting web content. SPDY became the basis for HTTP/2 specification. However, HTTP/2 diverged from SPDY and eventually HTTP/2 subsumed all usecases of SPDY. After HTTP/2 was ratified as a standard, major implementers, including Google, Mozilla, and Apple, deprecated SPDY in favor of HTTP/2. Since 2021, no modern browser supports SPDY.

FastCGI is a binary protocol for interfacing interactive programs with a web server. It is a variation on the earlier Common Gateway Interface (CGI). FastCGI's main aim is to reduce the overhead related to interfacing between web server and CGI programs, allowing a server to handle more web page requests per unit of time.

HTTP/2 is a major revision of the HTTP network protocol used by the World Wide Web. It was derived from the earlier experimental SPDY protocol, originally developed by Google. HTTP/2 was developed by the HTTP Working Group of the Internet Engineering Task Force (IETF). HTTP/2 is the first new version of HTTP since HTTP/1.1, which was standardized in RFC 2068 in 1997. The Working Group presented HTTP/2 to the Internet Engineering Steering Group (IESG) for consideration as a Proposed Standard in December 2014, and IESG approved it to publish as Proposed Standard on February 17, 2015. The initial HTTP/2 specification was published as RFC 7540 on May 14, 2015.

References

  1. 1 2 "Oracle Web Tier Downloads". www.oracle.com. Oracle. Retrieved 11 August 2020.
  2. "Release Notes for Oracle HTTP Server". Oracle Help Center. Retrieved 2022-10-09.
  3. "Nsssl - AOLserver Wiki" . Retrieved 2014-07-04.
  4. "Apache Module mod_ssl" . Retrieved 2014-07-04.
  5. "mod_gnutls". Archived from the original on 2018-05-30. Retrieved 2014-07-04.
  6. "Apache Tomcat 6.0 - SSL Configuration HOW-TO" . Retrieved 2014-07-04.
  7. "Global options". caddyserver.com. Retrieved 11 August 2020.
  8. Installation guide shows server status with "IPv6 enabled"
  9. HFS: Secure your server
  10. Leisink, Hugo. "Features - Hiawatha webserver". hiawatha-webserver.org. Retrieved 2014-07-04.
  11. 1 2 3 "Scaling down the project". www.hiawatha-webserver.com. Retrieved 11 August 2020.
  12. "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.
  13. "Secure HTTP". redmine.lighttpd.net. Retrieved 2014-12-09.
  14. ""LiteSpeed Web Server v5.4 is Here!"". 24 July 2019. Retrieved 11 November 2019.
  15. "JavaServers". Wiki.nginx.org. Retrieved 2013-08-15.
  16. Ghosh, Soumik (2010-09-05). "Enable IPv6 support". Nginx Library. Retrieved 2013-08-15.
  17. "nginx changelog". www.nginx.com. 2015-09-22.
  18. "Feature Overview - 10g R2 (10.1.2)" (PDF). Oracle.com. 2010-09-07. Retrieved 2012-02-28.
  19. "BusyBox on Windows". "The Windows native build is currently broken."
  20. "Webserver FAQs". Caudium. Archived from the original on 2002-11-14. Retrieved 2012-02-28.
  21. John Poole. "Installation on Windows". cherokee-project.com. Retrieved 2014-11-23. "The Windows native build is currently broken."
  22. 1 2 3 4 5 Hugo Leisink. "About - Hiawatha webserver". hiawatha-webserver.org. Retrieved 2014-06-21.