Episode ini membedah kelahiran NGINX sebagai jawaban atas C10K problem, arsitektur event-driven non-blocking dengan master dan worker processes, perbandingannya dengan Apache HTTPD, serta peran-peran utamanya di industri modern.

Sebelum menulis directive pertama, kalian perlu tahu mengapa NGINX ada dan apa yang membuatnya berbeda. Episode 1 ini membedah sejarah, arsitektur utama, dan alasan mengapa NGINX dipilih hampir di semua perusahaan teknologi besar.
Pemahaman arsitektur bukan sekadar teori. Saat nanti kalian mengatur worker_processes, memilih cache strategy, atau memutuskan apakah NGINX cocok menggantikan Apache, semua keputusan itu berakar pada cara NGINX memproses koneksi. Mari kita mulai dari awal ceritanya.
NGINX dibuat oleh Igor Sysoev, seorang engineer asal Rusia. Pekerjaannya saat itu mengelola web server untuk situs dengan trafik sangat tinggi, dan dia merasa web server yang ada tidak cukup efisien.
Masalah utamanya dikenal dengan nama C10K Problem: bagaimana sebuah server bisa menangani 10.000 koneksi simultan dengan sumber daya yang masuk akal? Apache dan server sejenis kewalahan karena satu koneksi berarti satu proses atau satu thread. NGINX dirancang khusus menjawab tantangan ini.
NGINX dirilis ke publik pada tahun 2004 dengan nama yang dieja "engine-x". Fokusnya satu: menangani ribuan koneksi bersamaan dengan penggunaan memori minimal. Dalam beberapa tahun, NGINX menjadi salah satu web server paling banyak dipakai di dunia, menjadi tulang punggung CDN dan layanan internet skala besar.
Kunci NGINX adalah model event-driven. Sebuah event loop memantau ribuan koneksi sekaligus tanpa menunggu satu koneksi selesai. I/O dilakukan secara asynchronous dan non-blocking: satu thread menangani banyak koneksi, berpindah antar koneksi saat ada event baru.
ps -ef | grep nginxOutputnya menampilkan satu process nginx: master process dan beberapa nginx: worker process. Inilah fondasi desain NGINX.
NGINX terdiri dari dua tipe proses:
Jumlah worker biasanya diikuti dengan worker_processes auto;, yang membuat NGINX menyesuaikan diri dengan jumlah core CPU. Koneksi dibagi merata ke worker melalui sistem load balancing internal, dan memakai epoll di Linux atau kqueue di BSD/macOS untuk memantau event ribuan file descriptor sekaligus.
Untuk melihat modul dan fitur yang tersedia di build NGINX kalian:
nginx -Vnginx -V menampilkan versi beserta semua module yang terkompilasi, termasuk --with-stream untuk Layer 4 dan --with-http_v3_module jika kalian memakai build yang mendukung HTTP/3.
Apache secara tradisional memakai pendekatan process-per-connection (MPM prefork) atau thread-per-connection (MPM worker). Setiap koneksi baru berarti proses atau thread baru. Saat koneksi mencapai ribuan, overhead memori dan switching context melonjak.
Perbandingan singkatnya:
.htaccess per direktori; NGINX mengabaikan fitur ini demi performa dan meminta konfigurasi terpusat.Bukan berarti Apache buruk. Untuk hosting bersama dengan fleksibilitas tinggi, Apache masih pilihan masuk akal. Tapi untuk web server, reverse proxy, dan load balancer berperforma tinggi, NGINX adalah pilihan yang hampir selalu lebih baik.
NGINX tidak sekadar web server. Di industri, ia dipakai untuk:
stream (L4) dan upstream (L7).Bahkan ketika NGINX hanya menyajikan file statis, penghematan resource membuat backend aplikasi bebas menangani logika yang benar-benar penting.
NGINX dan derivatifnya (seperti OpenResty dan NGINX Unit) melayani sebagian besar situs top dunia, termasuk dipakai sebagai entry point utama CDN dan edge server. curl -I https://example.com dan lihat header Server kalian — besar kemungkinan tertulis nginx.
Keunggulan lain yang membuat NGINX mendominasi: semuanya ada dalam satu binary. Kalian tidak perlu memasang tool terpisah untuk caching, reverse proxy, dan load balancing. Awal dari semuanya adalah config sekecil ini:
worker_processes auto;
events {
worker_connections 1024;
}Dua blok ini adalah benih dari hampir semua konfigurasi yang akan kita tulis sepanjang series. Arsitektur yang efisien sejak desain membuat NGINX cocok untuk peran apa pun yang kalian berikan.
Episode 1 menjelaskan mengapa NGINX ada: jawaban atas C10K problem yang lahir dari tangan Igor Sysoev pada tahun 2002. Arsitektur event-driven non-blocking dengan satu master dan banyak worker membuatnya mampu melayani ribuan koneksi dengan resource minimal.
Inti yang harus dibawa pulang:
Di episode 2 selanjutnya kita akan membedah anatomi file konfigurasi nginx.conf dan directives — mulai dari hierarki context main, events, http, server, hingga location, aturan sintaks simple dan block directives, serta modularisasi konfigurasi dengan directive include.