- Apache HTTP Server
- Nginx
- Apache Tomcat
Apache HTTP Server
Apache HTTP Server, also known as Apache is a well-known, and the most popular open source web server available in the market. It supports multiple platforms including many Linux distros. It’s often coupled with either Debian or Ubuntu when hosting websites. Apache is also one of the oldest web servers still functions and receives updates. According to Apache foundation, it’s developed 24 years ago, and thus it provides rock solid performance, and legacy support. However due to this nature, it doesn’t receive frequent updates. The latest version is 2.4 and was released in 2012; hence it may not be suitable to incorporate with latest technologies.
Apache was developed with Apache License 2.0 license, and thus it can be used with commercial projects as well without paying the developer a fee. This makes many free/and cheap web hosting companies to use Apache as the default web server in their platforms. Apache is very fast, and efficient in using resources as it’s entirely developed with C, and XML. Apache supports multiple server-side scripts, the popular ones to be used with it are PHP, Perl, Python, TCL. However, other languages can be hosted on an Apache web server via workarounds, for instance Apache can be used with ASP.NET as a reverse proxy, Java servlet apps can be hosted via mod_cgi.
Apache supports many useful features such as mod_gzip that reduces the payload size when transferring content over the HTTP, apache logging that notes down basic visitor information in plain text format, which is quite useful for analytical purpose. Virtual hosting that lets users to host as much as web sites in a single web server. Password authentication that servers to implement a simple username/password authentication in site-level. IPV6 compatibility to make it future proof, HTTP/2 supports to drastically improve the performance when combining with HTTPS protocol.
URL rewriting to manage legacy web pages, and how requests to them are handled, FTP supports. .htaccess support to specify rules in managing the web server. At the outset, Apache was significantly slower than asynchronous, event‑driven web servers like Nginx, but nowadays it performs much better compared to how it used to be. All in all, Apache is best for general purpose hosting solutions.
Nginx
Nginx, also known as eNgineX is relatively a new web server but is matured given its time in the industry. It was first released to public in 2004 and has been getting a huge coverage due to high performance. Currently, it’s considered as second most popular web server among active sites.
Nginx is often used as a reverse proxy, load balancer, http cache, email proxy server, and is capable of handling a large number of parallel requests without slowing down the server. According to its developers it’s capable of handling more than 10,000 simultaneous connections with a very low memory footprint like about 2.5MB. This is all possible due to its asynchronous, event‑driven nature. Nginx supports a large number of web server languages, but it doesn’t have any native support, and thus third-party modules have to be used, for instance it requires PHP-FPM to be installed separately for processing PHP scripts. Even though Nginx is used as a standalone web server, nowadays many developers use it as a static content server in front of the actual server. Some sites, dynamically handle the requests in the back-end, and cache them for Nginx to serve when the content was requested by the user.
Nginx has a lot of useful modern features. It supports Ipv6, URL rewriting, TLS/SSL encryption, SMTP/POP3 and IMAP protocols, FastCGI, PHP-FPM, SCGI, uWSGI. Nginx doesn’t use dynamic configuration file as with Apache, and thus it’s not widely used in cheap web hosting solutions. Due to its high-performance Nginx is best as a static content server, load balancer, and also as a web server for handling web app api requests. Nowadays web app development is getting a huge bump due to the advancement of Javascript. Many developers slowly move away from traditional back-end scripts, to JavaScript. Javascript is run on top of NodeJS. However, since NodeJs is not very efficiency at handling HTTP requests, and thus it’s often installed behind a Nginx proxy server; hence Nginx to be used as proxy server is recommended too. All in all, it’s best Nginx to be used as a static file server, proxy server, load balancer, as a lightweight solution and for serving dynamic content at a lower cost on sites that receive a large number of requests at a given time.
Apache Tomcat
Apache Tomcat is one of the most popular enterprise level web servers available in the market. It’s primarily designed to host Java web-based solutions. Java based web sites are not common in individual, small, and medium size companies, but their usage is quite frequent, and abundant in very large organizations due to high scalability, performance, and the number of tools available for Java ecosystem. Tomcat server was developed 20 years ago, and thus it’s quite matured compared to most of modern web servers. It’s developed by Apache software foundation just as the Apache web server. Tomcat is made of multiple components, Catalina, Coyote, Jasper, Cluster, High availability, Web applications.
Catalina is a servlet container, Coyote is the HTTP connector, and Jasper is the engine to parse the JSP files. High availability component is for facilitating the system upgrade process. Apache foundation also developed Apache TomEE Java EE for Java Enterprise edition. Tomcat supports AWS, aka Amazon web services, and thus it’s ideal for cloud-based solutions. Eclipse, and Netbeans are two of the famous Java IDEs, since Eclipse supports to Tomcat, app development, and deployment is a walk in the park. It’s also very easy to install, roll out the apps without much effort. However, Tomcat has lack of support for web console management, and the base Tomcat doesn’t natively support JEE. All in All, Apache Tomcat is the best web server for large organizations where Java web-based applications are frequently used.