Nginx is an open source web server written to address some of the performance and scalability issues associated with other web servers like Apache. You will get more support if you buy Nginx plus version. It is event based. Nginx architecture is called ‘’event driven and asynchronous.’’ It is also said to be non-blocking.
Event means a user connection and asynchronous means that it handles user’s interaction for more than one user at a time. The feature of non-blocking means it does not stop the disk I/O because the CPU is busy. In this case, it starts working on other events until the I/O is freed up.
According to Nginx, its web server was written to address the C10K problem (reference from a paper written by Daniel Kegel). The C10K problem is about how to get one web server to handle 10,000 connections with the limitations of the operating systems.
Nginx has a different way of handling threads. There are no new processes created in Nginx for each web request, instead the Nginx administrator configures the number of worker processes needed to create the main Nginx process. Each of this process is single threaded which means each worker can handle thousands of connection, concurrently. It does not use multi-threaded programming because it performs asynchronously with one thread.
The Nginx comprises of modules that are included during the compile time which means that the user downloads the source code and selects the module that needs to be compiled. There are modules for everything like connection to back end application servers, load balancing, proxy server, and others. However, there is no module for PHP because Nginx is capable of compiling a PHP code itself.
Nginx is known for its speed which means it can serve up static content quicker and includes advanced load balancing and caching abilities.