NGINX, articulated as motor X, is a famous web server that, likewise, serves as a turn-around intermediary, stack balancer, and HTTP store for HTTP, TCP, and UDP servers. Structured by Igor Sysoev in 2004, this web server was planned as an approach to sidestep the C10k issue.
NGINX is open-source software that currently runs on multiple environments including Unix, Linux, BSD variants, MacOS, Solaris, AIX, HP-UX, and Windows. Sysoev’s goal when creating this web server was to create the fastest web server around, and the community consistently tries to continue maintaining this goal. It beats other web servers in benchmarks measuring web server performance.
As websites became more dynamic, NGINX has followed suit. From simple HTML pages to dynamic websites, NGINX supports all the components of the modern web, including WebSocket, HTTP/2, and streaming of multiple video formats (HDS, HLS, RTMP, and others).
C10k Problem
When the Internet was young, scaling wasn’t such a big issue. However, as the Internet grew into a massive aid for business and connecting people across the web, scaling became one of the main issues that needed to be tackled.
The main problem that web servers commonly faced were heavy loads. When more connections are required to be made, the web server slows down. This was coined as the C10k problem by Dan Kegel in 1999, referring to the Simtel FTP host, cdrom.com, serving 10,000 clients at once over 1 Gigabit Ethernet in that year.
Although servers are more than equipped to handle that many loads today, the problem that many web servers still come across is handling more requests per second, which reduces the speed of handling requests. NGINX uses a more scalable, event-driven (asynchronous) architecture, instead of relying on thread-based request handling system, making it efficient to handle more requests per second without compromising on speed.
Features of NGINX
- Low memory footprint
- Ability to handle more than 10,000 simultaneous connections
- Handling of static files, index files, and auto-indexing
- Reverse proxy with caching
- Load balancing
- IPv6-compatible
- Name-based and IP-based virtual servers
- The PUT, DELETE, MKCOL, COPY, and MOVE methods
- FLV and MP4 streaming
- Response rate limiting
- Limiting the number of simultaneous connections or requests coming from one address
Embedded Perl
These are only a couple of the highlights of NGINX, you can look at a total breakdown of its highlights here.