Nginx (pronounced "engine-x") is a high-performance web server, reverse proxy, and load balancer originally created to solve the C10K problem β handling 10,000 concurrent connections. Unlike traditional servers that spawn a process per request, Nginx uses an asynchronous, event-driven architecture with worker processes, enabling it to handle thousands of simultaneous connections with minimal memory. Today, Nginx powers over 30% of the world's busiest websites, excelling in scenarios requiring high concurrency, low latency, and efficient resource use. The key to mastering Nginx is understanding its hierarchical configuration structure (main β http β server β location) and recognizing that context matters β where you place a directive determines its scope and behavior, making precise configuration placement critical for predictable results.
What This Cheat Sheet Covers
This topic spans 15 focused tables and 166 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Configuration Contexts & Directive Hierarchy
| Context | Example | Description |
|---|---|---|
user nginx;worker_processes auto; | β’ Top-level context outside any blocks β’ affects entire Nginx instance globally β worker processes, error logs, PID file. | |
events { worker_connections 1024;} | Configures connection processing mechanics β worker connections, event model (epoll/kqueue), connection acceptance. | |
http { include mime.types; server { ... }} | β’ Contains all HTTP-level directives β MIME types, logging, caching, compression β’ wraps all server blocks. | |
server { listen 80; server_name example.com;} | β’ Defines a virtual host (server block) β’ each server block handles requests for specific domains or IPs. | |
location /api/ { proxy_pass http://backend;} | Most granular control β matches URI patterns within a server, applies directives to specific request paths. | |
upstream backend { server 192.168.1.10:8080;} | β’ Defines a pool of backend servers for load balancing and proxying β’ referenced by proxy_pass. |