Open Source Web Servers

NGINX

Nginx is a web server that can also be used as a reverse proxy, load balancer, and HTTP cache.

Nginx is free and open-source software, released under the terms of a BSD-like license. A large fraction of web servers use NGINX, often as a load balancer.

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.

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.

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 type of request, 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 codebase 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 them to run real-time communication and browser games. Node.js also highlights the difference in web development stacks, where Node.js is part of the HTML, CSS, and JavaScript stack, as opposed to Apache or NGINX which are a part of many different software stacks.

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 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.

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.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *