10 Feb 2019

NGINX: Better and Faster Web Server Technology

NGINX is a well-known web server that also serves as a reverse proxy, load balancer, and HTTP cache for HTTP, TCP, and UDP traffic. Created by Igor Sysoev in 2004, it was designed specifically to address the C10k problem.

Overview

NGINX runs across multiple platforms, including Unix, Linux, BSD variants, macOS, Solaris, AIX, HP-UX, and Windows. Sysoev set out to build the fastest web server available, and the community carries that mission forward. NGINX supports modern web components including WebSocket, HTTP/2, and several video streaming formats (HDS, HLS, RTMP).

The C10k problem

As internet usage grew, scaling became critical. The C10k problem — coined by Dan Kegel in 1999 — referred to handling 10,000 simultaneous client connections. Modern servers handle that easily now, but the underlying challenge remains: processing more requests per second without sacrificing speed. NGINX uses an event-driven (asynchronous) architecture instead of relying on thread-based request handling, enabling efficient high-volume request processing.

Key features

  • Low memory footprint
  • Handles 10,000+ simultaneous connections
  • Static file handling and auto-indexing
  • Reverse proxy with caching
  • Load balancing
  • IPv6 compatibility
  • Name-based and IP-based virtual servers
  • Support for PUT, DELETE, MKCOL, COPY, MOVE methods
  • FLV and MP4 streaming
  • Response rate limiting
  • Connection/request limiting per address
  • Embedded Perl support