Episode ini merangkai seluruh materi menjadi studi kasus NGINX production gateway: single entry point HTTPS, security perimeter, observability, lapisan performa, upstream routing dengan fallback maintenance, dan checklist kesiapan produksi.

Inilah puncak perjalanan kalian. Episode 20 merangkai semua materi dari 19 episode sebelumnya menjadi satu studi kasus utuh: merancang NGINX production gateway untuk enterprise web application. Bukan konfigurasi ideal di kertas, tapi arsitektur nyata yang dipakai di produksi. Kalian akan menyusun single entry point HTTPS, security perimeter, observability JSON, lapisan performa, upstream routing dengan fallback maintenance, dan checklist kesiapan produksi untuk audit server kalian sendiri.
Arsitektur gateway kita punya lima lapisan yang berjalan berurutan: single entry point HTTPS dengan sertifikat Let's Encrypt auto-renew dan HTTP/2, security perimeter dengan HSTS dan security headers, observability dengan access log JSON untuk Grafana Loki, lapisan performa dengan microcaching dan kompresi, serta upstream routing ke tiga backend container dengan fallback halaman maintenance. Semua lapisan dirakit dalam satu nginx.conf yang modular, dan kita akan menyusunnya satu per satu.
Server block utama memakai HTTPS, HTTP/2, dan redirect HTTP:
server {
listen 80;
server_name app.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name app.example.com;
ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;
include /etc/nginx/includes/ssl.conf;
include /etc/nginx/includes/security-headers.conf;
}http {
limit_req_zone $binary_remote_addr zone=gateway_zone:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=gateway_conn:10m;
server {
limit_req zone=gateway_zone burst=30 nodelay;
limit_conn gateway_conn 20;
client_max_body_size 10M;
}
}Observability dimulai dari log. Kita memakai format JSON dari episode 15:
http {
log_format json_gateway escape=json
'{'
'"time":"$time_iso8601",'
'"remote_addr":"$remote_addr",'
'"request":"$request",'
'"status":$status,'
'"request_time":$request_time,'
'"upstream_response_time":"$upstream_response_time",'
'"http_user_agent":"$http_user_agent"'
'}';
access_log /var/log/nginx/access.log json_gateway;
}http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=gateway_cache:50m
max_size=2g inactive=60m;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_vary on;
open_file_cache max=10000 inactive=20s;
server {
location / {
proxy_cache gateway_cache;
proxy_cache_valid 200 302 1m;
proxy_cache_lock on;
proxy_cache_use_stale updating error timeout;
}
}
}Microcaching 1 menit dengan proxy_cache_use_stale membuat gateway tetap responsif bahkan saat backend sedang lambat atau diperbarui.
Bagian terakhir adalah cluster backend dan fallback. Ketika semua backend down, aplikasi harus tetap menampilkan halaman yang sopan, bukan error kosong:
http {
upstream backend_app {
least_conn;
server 10.0.1.11:3000 max_fails=3 fail_timeout=30s;
server 10.0.1.12:3000 max_fails=3 fail_timeout=30s;
server 10.0.1.13:3000 max_fails=3 fail_timeout=30s backup;
}
server {
listen 443 ssl http2;
server_name app.example.com;
location / {
proxy_pass http://backend_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 10s;
proxy_read_timeout 60s;
proxy_cache gateway_cache;
proxy_cache_valid 200 302 1m;
}
location = /maintenance.html {
internal;
root /var/www/gateway;
}
error_page 502 503 504 /maintenance.html;
}
}error_page 502 503 504 /maintenance.html; mengalihkan semua error upstream ke halaman maintenance. Dua backend utama memakai least_conn; server ketiga bertipe backup sehingga hanya dipakai saat keduanya down. Ketika semua backend gagal, pengguna tetap melihat halaman maintenance yang rapi, bukan layar error mentah.
nginx -t bersih dan konfigurasi sudah masuk version control.server_tokens off aktif.Uji fallback sekarang juga: matikan semua backend dan lihat apakah halaman maintenance muncul. Inilah momen membuktikan arsitektur kalian layak produksi.
Episode 20 menutup perjalanan Belajar Nginx dengan karya utuh: kalian merancang production gateway dengan single entry point HTTPS, security perimeter, observability JSON, lapisan performa, dan upstream routing dengan fallback maintenance.
Inti yang harus dibawa pulang:
error_page 502 503 504 plus backend backup membuat fallback maintenance otomatis.Series Belajar Nginx telah berakhir. Kalian sekarang menguasai NGINX dari pre-requisites sampai arsitektur production-grade: konfigurasi, virtual host, reverse proxy, load balancing, caching, SSL/TLS, keamanan, autentikasi, protokol realtime, modularitas, logging, performa, stream module, sampai troubleshooting. Terapkan materi ini, uji di server kalian, dan jadikan NGINX bagian dari skill production engineering kalian. Selamat berkarya!