Apache and NGINX are two major players in the web server business. Apache was first released in 1995, then came Nginx in 2004. These correspond to 5 percent of web traffic over the Internet, but they are different from each other.

We will talk about Apache first since it was the first to come out:

After the CERN HTTPd and the NCSA HTTPd of Tim Berners-Lee, Apache arrived, conquering the market in a few moments after entering became the most popular web server. And today, it still holds a strong position in the market, but mostly for legacy reasons.

Nginx came onto the scene in 2004, when it was first released publicly by Russian developer Igor Sysoev. In fact, “Nginx was written specifically to address the performance limitations of Apache web servers.” He mentioned Owen Garret, the Nginx project manager.

As the network evolved, and the need to squeeze every last drop out of the speed and efficiency of using hardware with it, more sites began to replace Apache with Nginx entirely, thanks to much more mature software.

Yes, we can say that NGINX cannot compete against feature-rich Apache on many fronts, but its asynchronous state and single-threaded architecture make it a smart choice over Apache.

Other important differences are:

• Apache uses a multi-threaded approach to process client requests. Whereas Nginx follows an event-based approach to serve customer requests.

• With Apache, a single thread can only process one connection. Instead, in Nginx, a single thread can handle multiple connections.

• Apache’s performance for static content is lower than that of Nginx.

• Nginx can simultaneously run thousands of static content connections twice as fast as Apache and uses slightly less memory.

Therefore, from my point of view, the advantage that Nginx currently has over Apache is very clear. However, Apache will continue to be on the market for a long time, as it continues to cope with today’s needs. Not to mention that there are already many web servers built on it.

Posted by

Melissa Alvarez – Systems Engineer