Episode ini membedah hierarki context di nginx.conf, perbedaan simple directives dan block directives, serta cara memecah konfigurasi besar menjadi file-file kecil memakai directive include.

Semua kemampuan NGINX ditentukan oleh satu file: /etc/nginx/nginx.conf. Episode 2 ini membedah anatomi file konfigurasi NGINX — hierarki context, aturan sintaks directives, dan cara modularisasi konfigurasi. Ini adalah fondasi yang akan kalian pakai di setiap episode berikutnya.
Setelah episode ini, kalian tidak akan lagi melihat nginx.conf sebagai file misterius. Kalian akan memahami di mana sebuah directive harus diletakkan, kenapa server_name tidak bisa ditulis di luar context http, dan bagaimana satu file raksasa dipecah menjadi potongan kecil yang rapi.
Context paling luar disebut main. Directive di level ini mengatur NGINX secara global, seperti user yang menjalankan process dan jumlah worker:
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log warn;Context events mengatur cara worker menangani koneksi:
events {
worker_connections 1024;
use epoll;
}Context http membungkus seluruh konfigurasi HTTP: server block, location, upstream, dan banyak lagi. Hampir semua directive yang kita bahas di series ini berada di dalam http.
Di dalam http, context server mendefinisikan virtual host (satu domain atau satu pasangan IP+port), dan di dalam server, context location menangani URI tertentu. Keduanya akan dibedah mendalam di episode 3 dan 4.
Simple directive hanya satu baris, diakhiri titik koma ;. Contohnya worker_processes auto; dan server_name example.com;. Titik koma wajib ada; jika hilang, nginx -t akan menolak konfigurasi.
Block directive berbentuk nama diikuti kurung kurawal { } dan berisi directive lain di dalamnya. Contoh paling jelas adalah http, events, server, dan location. Kurung kurawal menandai batas scope, sehingga directive di dalamnya hanya berlaku untuk context tersebut.
worker_processes auto;
events {
worker_connections 1024;
}
http {
sendfile on;
}Perhatikan: sendfile on; berada di dalam http, dan worker_connections di dalam events. Jika ditukar, NGINX akan menolak konfigurasi karena directive tidak dikenali di context tersebut.
Pada Ubuntu, nginx.conf utama cukup tipis karena sebagian besar konfigurasi di-include:
/etc/nginx/conf.d/*.conf/etc/nginx/sites-enabled/*Ubuntu juga menyediakan snippets/ untuk potongan konfigurasi reusable, dan mime.types untuk pemetaan ekstensi file ke MIME type.
Bayangkan semua server block, upstream, dan cache ditulis dalam satu nginx.conf. File akan panjang, sulit dibaca, dan rawan konflik saat banyak tim ikut mengedit. Solusinya: directive include.
Directive include menyisipkan isi file lain seolah-olah ditulis langsung di posisi tersebut:
http {
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}Pola *.conf dan * adalah wildcard. Aturan praktisnya: konfigurasi spesifik per server ditulis sebagai file terpisah di conf.d/ atau sites-enabled/, lalu otomatis di-include. Kapan pun ada perubahan, cukup jalankan nginx -t dan reload.
Berikut gabungan semua yang sudah dibahas — gambaran file yang akan kita kembangkan bertahap sepanjang series:
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
server_name _;
root /var/www/html;
index index.html;
}
}Simpan, lalu uji dengan nginx -t. Jika output menyatakan syntax is ok, kalian berhasil menulis konfigurasi yang valid sejak percobaan pertama.
Episode 2 memberi kalian kunci membaca dan menulis nginx.conf: hierarki context main, events, http, server, dan location; aturan simple directive yang diakhiri titik koma dan block directive yang dibungkus kurung kurawal; serta pola modularisasi dengan include.
Inti yang harus dibawa pulang:
;, block directive memakai { }.nginx -t akan menolak yang salah.include untuk memecah konfigurasi besar.nginx -t sebelum reload.Di episode 3 selanjutnya kita akan menyiapkan static web server dan virtual hosts (server blocks) — mendefinisikan beberapa domain dalam satu NGINX, mengatur directive listen, server_name, perbedaan root dan alias, index, serta error_page. Siapkan domain atau IP server kalian, karena mulai sekarang kita menulis konfigurasi sungguhan!