Statistics show us that well over 80% of web applications and websites are powered by open source web servers. In this article, I look at the most popular open source web servers, and briefly review their history, technology, features, and more. I will also provide some tips so you can easily deploy one of the popular web servers yourself.
According to Wikipedia, a web server is "a computer system that processes requests via HTTP, the basic network protocol used to distribute information on the World Wide Web. The term can refer to the entire system, or specifically to the software that accepts and supervises the HTTP requests." In this article, we address the software which specifically processes web requests from end users.
Apache HTTP Server
The Apache HTTP Server—often referred to as httpd, or simply Apache—was first launched in 1995, and celebrated its 20th birthday in February 2015. Apache powers 52% of all websites globally, and is by far the most popular web server.
While Apache httpd is most often seen running on Linux, you can also deploy Apache on OS X and Windows. Apache is, unsurprisingly, licensed under the Apache License version 2. The web server itself uses a modular architecture, in which extra modules can be loaded to extend its features. For example, loading the mod_proxy will allow for a proxy/gateway on your server, and mod_proxy_balancer will enable load balancing for all supported protocols. As of version 2.4, Apache also supports HTTP/2 through a new module, mod_http2.
As the Apache HTTP Server has been the most popular web server since 1996, it "benefits from great documentation and integrated support from other software projects." You can find more information on the Apache Foundation project page.
NGINX
Igor Sysoev began developing NGINX back in 2002, with its first public release in 2004. NGINX was developed as an answer to the so-called C10K problem, which is shorthand for "how do you design a web server which can handle ten thousand concurrent connections?" NGINX is second on a list of open source web servers by usage, running just over 30% of all websites.
NGINX relies on an asynchronous event-driven architecture to help power its goal of handling massive concurrent sessions. It has become a very popular web server among administrators due to its light resource utilization and its ability to scale easily.
NGINX is released under a BSD-like license, and can not only be deployed as web server, but also as proxy server or load-balancer. You can find more information on the NGINX community site.
Apache Tomcat
Apache Tomcat is an open source Java servlet container that functions as a web server. A Java servlet is a Java program that extends the capabilities of a server. Although servlets can respond to any types of requests, they most commonly implement applications hosted on Web servers. Such web servlets are the Java counterpart to other dynamic web content technologies such as PHP and ASP.NET. Tomcat's code base was donated by Sun Microsystems to the Apache Software Foundation in 1999, and became a top-level Apache project in 2005. It currently powers just under 1% of all websites.
Apache Tomcat, released under the Apache License version 2, is typically used to run Java applications. It can, however, be extended with Coyote, to also perform the role of a normal web server that serves local files as HTTP documents. More information can be found on the project website.
Apache Tomcat is often listed among other open source Java application servers. Some examples are JBoss, Wildfly, and Glassfish.
Node.js
Node.js is a server-side JavaScript environment for network applications such as web servers. With a smaller market position, Node.js powers 0.2% of all websites. Node.js was originally written in 2009 by Ryan Dahl. The Node.js project, governed by the Node.js Foundation, is facilitated by the Linux Foundation's Collaborative Projects program.
The difference between Node.js and other popular web servers is that it is primarily a cross-platform runtime environment to build network applications with. Node.js applies an event-driven architecture capable of asynchronous I/O. These design choices optimize throughput and scalability in web applications allowing to run real-time communication and browser games. Node.js also highlights the difference in web development stacks, where Node.js is clearly part of the HTML, CSS, and JavaScript stack, as opposed to Apache or NGINX which are a part of many different software stacks.
Node.js is released under a mix of licenses; more information is available on the project's website.
Lighttpd
Lighttpd—pronounced "lightly"—saw its initial release in March 2003. It currently powers approximately 0.1% of all websites and is distributed under a BSD license.
Lighttpd distinguishes itself with its low memory footprint, small CPU load, and speed optimizations. It uses an event-driven architecture, is optimized for a large number of parallel connections, and supports FastCGI, SCGI, Auth, Output-compression, URL-rewriting and many more features. Lighttpd is a popular web server for the Catalyst and Ruby on Rails web frameworks. Find more information on the project homepage.
Tips
If you are looking to try one of the popular web servers, I can highly recommend downloading a LAMP (Linux, Apache, MySQL, PHP) or LEMP (Linux, NGINX, MySQL, PHP) stack. There are plenty of such stacks available, providing different flavors in for example Apache and PHP versions. They are usually provided as one-click installers, or available in your package/software manager on Linux.
Once you have successfully gone through the installation process, you can start your web server, and try out a Hello World example. It's a great way to start discovering the ins and outs of your web server, and how web servers work more generally.
Summary
This is by no means an exhaustive list of web servers. I have included some of the most popular web servers and looked at their supported technologies. If you are interested in more detail, particularly with the differences of Apache and NGINX, I recommend reading this article on practical considerations for choosing a web server.
And of course, we are always curious what your choice of web server is, for your web development or hosting needs. Let us know in the comments.
12 Comments