NGINX (Pronounced as Engine-X) is an open source, lightweight, high-performance web server or proxy server. It can also be reconfigured and utilized as areverse proxy server (for a number of protocols in the TCP/IP stack: SMTP, POP3, IMAP, HTTP, HTTPS), load balancer as well as an HTTP cache.
Also, it can be used for server load-balancing and HTTP caching applications. Nginx speeds up content and application delivery, improves overall security, and optimizes availability and scalability for the most visited websites on the public internet.
In pedestrian language, Nginx is simply a type of software which is used in web servers to respond to concurrent user requests. Before the coming of Nginx, server administrators used to rely upon the popularApacheweb server to handle these functions. However, as the internet world grew ever more demanding, the challenge of concurrency led to the research and innovation behind the creation of Nginx.
As of 2017, Nginx remains an open source software, released under the auspices of aBSD-like license. In the year 2011, a company of the same name was founded to provide technical support to its many users. Technical assistance includes notifications about material changes, new security patches, and other updates. The company's primary place of business is San Francisco, California, although it is legally registered in the British Virgin Islands. The Nginx company offers consulting services to customers regarding custom configuration or the inclusion of additional features.
Nginx runs on many platforms includingWindows, BSD variants, Solaris, LinuxAIX, HP-UX, macOS and Unix. Nginx has been able to meet the needs of many websites that have to respond to over 600 million user requests per day.
In 2004,Igor Sysoev released the first version of Nginx, although his development efforts began in 2002. Speaking academically, Nginx was designed and implemented to resolve the C10K Problem. This refers to the challenge of optimizing TCP/IP sockets to efficiently and effectively respond to a large number of concurrent clients at the same instance of time.
The name C10k derives from a numeronym for concurrently attending to ten thousand socket connections. It is to be borne in mind that the term “concurrent connections” does not mean the same as “requests per second”, although their meanings are similar. Attending to many user requests per second entails having a high throughput (i.e. processing these requests quickly) while handling a large number of concurrent connections demands efficient scheduling of connections.
In what amounts to the same thing, handling many user requests per second has to do with the rapidity of handling user requests, whereas a web server capable of responding to a large number of concurrent connections does not always need to be a fast system, only one where each request will predictably return a response within a (possibly pre-determinable) finite duration of time.
The problem of socket server optimization has been intensely studied in academia, because a number of parameters must be properly configured to allow a web server to support a vast number of clients.
This can derive from a combination of operating system limitations and web server software trade-offs. According to the quality of services to be made available and the possibilities offered by the host operating system (in addition to hardware considerations e.g. multi-processing capabilities) a multithreading paradigm or a single threading paradigm might can be preferred.
Nginx can be installed to handle dynamicHTTP traffic on the internet using technologies like FastCGI, SCGI handlers to deal with various scripts, WSGI application servers, and it can serve as a server load balancer. Nginx uses an optimized event-drivenmethodology to handle incoming requests. Nginx's modular event-driven architecture provides highly predictable performance under high traffic.
HTTP proxy and Web server module features
Mail proxy module features
According toNetcraft's Nov. 2016 Web Server Survey, Nginx was revealed to be the second most widely used web server across all "active" websites (18.22% of the sites surveyed) and for the top million busiest websites (27.83% of sites surveyed).
According to aW3Techs study, Nginx was used by 37.7% of the top one million websites, 49.7% of the top 100,000 sites, and by 57.0% of the top 10,000 sites.
Nginx was written with a primary objective of outdoing the classicApacheweb server. Nginx uses remarkably less RAM than Apache and can handle approximately four times more user web requests per second.
This performance-boost comes with the trade-off of reduced flexibility, such as the possibility of overriding system-wide access settings on a per-file basis (whereas Apache realizes this with a.htaccessfile reconfiguration, Nginx does not ship with any such feature).
In the past, installing third-party software modules to Nginx demanded a recompilation of the application from source code, with the modulesstatically linked. This was eventually overcome in version 1.9.11 with the inclusion of dynamic module loading. However, these modules must still be compiled at the same time as Nginx.
Your subscription request has been received, please check your email for confirmation.