NGINX is an open-source software application that can be used as a web server, reverse proxy server, load balancer, and HTTP cache. NGINX was designed with the objective of addressing the C10k problem, which refers to the difficulty traditional web servers had in handling more than ten thousand simultaneous connections.
The development of NGINX began in 2002 when Igor Sysoev, a Russian system administrator, started working on the software. Sysoev was employed by Rambler (which is like Russia’s equivalent of Google), and the project was initially intended to solve the C10k problem, which is the difficulty for servers in handling more than 10,000 concurrent connections.
The C10k problem was a significant issue for web servers in the early 2000s. Traditional servers, like the Apache HTTP Server, were based on a process or thread-driven architecture. This meant that each new connection to the server would spawn a new thread or process, which was resource-intensive and didn’t scale well for a large number of connections.
NGINX, in contrast, uses an event-driven architecture. Instead of creating a new process or thread for each connection, NGINX maintains a small number of worker processes and uses non-blocking I/O to handle many connections per worker. This model is far more efficient for serving a high number of concurrent connections, making NGINX well-suited for the needs of high-traffic websites.
NGINX was open-sourced in 2004, and it quickly gained popularity. It became especially well-regarded for its performance and stability. Over time, new features were added, such as reverse proxying, caching, and load balancing capabilities, which made it not just a web server but a versatile tool for many kinds of HTTP-based applications and services.
The company NGINX, Inc. was founded in 2011 to provide commercial products and support for the software. The commercial offerings, known as NGINX Plus, include additional features not available in the open-source version.
In 2019, F5 Networks, a company specializing in application services and delivery networking, acquired NGINX, Inc. The acquisition aimed to bridge the gap between NetOps and DevOps practices, with technology that can help organizations in their transition towards modern, microservices-based applications.
NGINX continues to be one of the most popular web servers, competing directly with the Apache HTTP Server in terms of usage on the internet.
Let’s break down its major functionalities:
There are several other products available that overlap with NGINX in functionality, including Apache’s HTTP Server, Microsoft IIS, and LiteSpeed. The table below compares those alternatives to NGINX to give you a more detailed understanding of how NGINX fares compared to alternatives.
NGINX is highly extensible, and its functionality can be extended through modules. While some of these modules come bundled with the software, others are third-party modules. Notable examples include modules for rewriting and redirecting URLs, limiting the rate of requests, and applying security controls such as HTTP Basic Auth and IP address-based access control lists.
There is also a commercial version of the software called NGINX Plus, which includes additional features like advanced load balancing methods, session persistence based on cookies, active health checks, and more.
In summary, NGINX’s design principles of handling connections and its diverse capabilities make it a popular choice for high-performance web architectures. It is used by many high-traffic websites due to its speed, performance, and flexibility.