Nginx Web Server – Comparison with Apache

What is Nginx?

Russian developer Igor Sysoev frustrated with Apache, created Nginx in 2004. He wanted to build a replacement of Apache web server capable of handling 10000 concurrent connections. His focus was on performance, high concurrency, and low memory usage.

Today Nginx serves the majority of the world’s top 1000 websites. This growth is due to its performance, and it is easy to set-up.

Of course, it’s by no means a simple piece of software. But it’s good at making practical tasks such as caching or video streaming very easy to put in place. There’s a large number of first and third-party modules that help extend its core functionality.

Yet, it’s essential to understand that Nginx is a reverse proxy server at its core. It’s because of this design that it performs so well.

Comparison with Apache

Apache is configured in what’s called prefork mode. It means that Apache had spawned a set number of processors. And each processor can serve a single request at a time regardless of whether that request is for static content like image or dynamic.

But Nginx deals with requests asynchronously. It means that a single Nginx process can serve many requests concurrently. The number of concurrent requests depends on the system resources available to the Nginx process

Because of asynchronous design, Nginx can’t embed server-side programming languages into its processes. It means that all requests for Dynamic Content have to be dealt with by a completely separate process like PHP-FBM and then reverse proxy back to the client via Nginx.

Of course, not having to deal directly with embedded programming languages like Apache does make Nginx a lot less resource hungry.
Now, this doesn’t mean that the resources used for the processing of server-side languages are free.

Instead, they are being allocated elsewhere like in the most common use-case of PHP to the PHP-FBM process.
But it does mean that PHP modules will not run for every request the server receives.

Nginx will handle serving static resources without PHP ever knowing about it. In comparison, Apache will process every request with that costly overhead.

And this is precisely where the real-world savings on system resources come into effect. So a well-configured Nginx web server serving both static and dynamic resources should always be more efficient and less demanding on system resources than a similar Apache set up.

How does this relate to performance, then you most likely read or heard that Nginx is faster than Apache?

But it’s essential first to define what’s meant by fast.
Nginx can’t deliver data to the client any faster than the internet connection will allow. But it can serve static resources much more quickly than Apache. It can also handle a much larger number of concurrent requests.

Remember, Nginx will serve static resources without the need to involve any server-side languages, and this gives it quite an advantage over Apache.
And as for handling concurrent requests, Nginx can receive thousands of requests on a single processing thread. It responds to them as fast as it can without turning down any of those requests.

But Apache will accept a request up to the preconfigured number and then reject the rest.

So, performance or fast meaning serving a large number of clients under high load. Also, assuming the usual mix of static and dynamic resources, we can say Nginx is faster than Apache.

Nginx configuration also takes a very different approach to have patches in their requests.
I interpret it as you are right.
Locations first, whereas Apache defaults to and favors filesystem locations.

This preference for file system locations is seen in the use of .htaccess files for overriding specific directory configurations.
Nginx doesn’t offer any similar functionality.
But seeing as Apache’s .htaccess overrides carries a significant performance penalty. They shouldn’t be considered an advantage.

It’s also because of this very design of interpreting requests.
As you are locations that allow Nginx efficiently function as not only a web server but anything from a load balancer to a mail server.

More To Explore

Let's Talk

Ready To Make Your WordPress Project A Success?
Fill out the form to share your contact details.
We will respond within 24 hours!