Nginx mentenagai sekitar 34% dari seluruh server web global dan telah menjadi reverse proxy default selama satu dekade. Traefik, diluncurkan pada 2016, dirancang khusus untuk lingkungan container dan telah berkembang hingga lebih dari 3 miliar unduhan Docker Hub. Saya menjalankan Nginx di setiap DigitalOcean VPS dan instance GCP di Commsult Indonesia, namun setelah bereksperimen dengan Traefik pada proyek sampingan multi-service, saya kini memiliki gambaran lebih jelas tentang kapan masing-masing alat ini layak digunakan.
Nginx dirancang sebagai server HTTP berperforma tinggi dan reverse proxy untuk lingkungan statis — Anda menulis file konfigurasi, reload, dan Nginx menerapkannya. Nginx unggul dalam throughput mentah: benchmark menunjukkan Nginx menangani 74.000+ permintaan per detik pada server 4-core. Traefik dirancang untuk lingkungan dinamis di mana layanan datang dan pergi. Ia terintegrasi langsung dengan Docker, Kubernetes, dan Consul, mendeteksi container baru secara otomatis dan mengonfigurasi rute tanpa reload konfigurasi manual apa pun.
Nginx menggunakan file konfigurasi datar (nginx.conf + konfigurasi situs di /etc/nginx/conf.d/). Setiap perubahan memerlukan reload — meskipun nginx -s reload bersifat graceful dan memakan waktu kurang dari satu detik. Traefik menggunakan konfigurasi dua tingkat: file konfigurasi statis (traefik.yml) untuk entrypoint dan provider, ditambah konfigurasi dinamis yang dibuat otomatis dari label Docker atau anotasi Kubernetes. Saat Anda menambahkan container baru dengan label yang tepat, Traefik mendeteksinya dalam hitungan detik, tanpa reload sama sekali.
Dalam benchmark independen, Nginx mengungguli Traefik v3 sekitar 36% dalam throughput permintaan mentah untuk beban kerja proxy statis. Traefik v3 meningkatkan performa sekitar 20% dibanding v2 namun masih di bawah Nginx dalam throughput murni. Untuk sebagian besar aplikasi produksi yang melayani di bawah 5.000 permintaan per detik, perbedaan ini tidak terlihat. Kesenjangan ini hanya penting untuk API volume tinggi atau endpoint media yang mendorong batas CPU.
┌──────────────────────────────────────────────────────┐
│ NGINX vs TRAEFIK ROUTING │
├──────────────────────┬───────────────────────────────┤
│ NGINX │ TRAEFIK │
├──────────────────────┼───────────────────────────────┤
│ Static config files │ Dynamic via Docker labels │
│ Manual reload req. │ Auto-detects new containers │
│ Max raw throughput │ Auto TLS (Let's Encrypt) │
│ Simple syntax │ Dashboard + API │
│ 74k+ req/s │ ~54k req/s (v3) │
└──────────────────────┴───────────────────────────────┘Dari pengalaman saya menjalankan keduanya di DigitalOcean Droplet, rate limiting bawaan Nginx (limit_req_zone) jauh lebih mudah disetel dibanding middleware chain Traefik untuk kasus penggunaan yang sama. Jika Anda membutuhkan rate limiting per-IP pada API, konfigurasi tiga baris Nginx jauh lebih dapat diprediksi dibanding tumpukan middleware YAML Traefik — setidaknya sampai Anda menginternalisasi model mental Traefik.
Fitur unggulan Traefik adalah Docker provider-nya. Tambahkan label ke container mana pun dan Traefik secara otomatis membuat rute HTTPS, meminta sertifikat Let's Encrypt, dan mulai merutekan traffic — semuanya tanpa menyentuh file konfigurasi apa pun. Ini benar-benar luar biasa untuk lingkungan pengembangan dan stack microservice di mana layanan sering ditambahkan. Nginx memerlukan server block manual atau alat seperti nginx-proxy untuk mendekati perilaku ini.
Traefik memiliki dukungan ACME (Let's Encrypt) bawaan. Arahkan ke email dan domain Anda, dan ia menangani penerbitan dan pembaruan sertifikat secara otomatis. Dengan Nginx, Anda memerlukan Certbot sebagai alat terpisah ditambah cron pembaruan atau systemd timer. Kedua pendekatan bekerja dengan andal, namun pendekatan terintegrasi Traefik memiliki lebih sedikit komponen bergerak — tidak ada Certbot, tidak ada deploy hook, tidak ada proses pembaruan terpisah.
# Traefik Docker Compose with auto TLS
services:
traefik:
image: traefik:v3
command:
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.email=you@domain.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./acme.json:/acme.json
myapp:
image: myapp:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host('myapp.example.com')"
- "traefik.http.routers.myapp.tls.certresolver=letsencrypt"Pilih Nginx jika Anda memiliki sekumpulan layanan yang stabil dan diketahui, membutuhkan performa mentah maksimal, memerlukan kontrol granular atas perilaku proxy (header kustom, aturan rewrite kompleks, geo-blocking), atau tim Anda sudah familiar dengan sintaks konfigurasi Nginx. Nginx juga pilihan tepat untuk menyajikan file statis — implementasi sendfile-nya sulit dikalahkan.
Saat pertama kali menyiapkan Traefik, saya mengekspos dashboard-nya secara publik tanpa autentikasi. Dashboard Traefik menampilkan seluruh tabel routing, konfigurasi middleware, dan semua IP layanan backend — tambang emas bagi penyerang yang memetakan infrastruktur Anda. Selalu letakkan dashboard di balik middleware BasicAuth atau batasi ke jaringan internal. Dalam produksi saya memblokirnya di level firewall sepenuhnya dan hanya mengaksesnya melalui tunnel SSH.
Untuk deployment VPS dengan set layanan tetap: Nginx, selalu. Konfigurasinya mudah dibaca, bisa dikontrol versi, dan setiap admin Linux memahaminya. Untuk pengembangan lokal dengan Docker Compose dan 5+ layanan: Traefik, karena HTTPS otomatis dan routing tanpa reload menghemat berjam-jam per minggu. Untuk Kubernetes: Traefik sebagai ingress controller sangat baik dan lebih mudah dikonfigurasi dibanding Nginx Ingress untuk tim tanpa keahlian Kubernetes mendalam.
Gunakan Nginx jika: topologi layanan Anda statis, Anda membutuhkan performa maksimal, Anda menginginkan file konfigurasi sederhana, atau Anda menyajikan aset statis. Gunakan Traefik jika: Anda menjalankan Docker Compose dengan banyak layanan, Anda menginginkan TLS otomatis tanpa konfigurasi, Anda membangun di Kubernetes, atau Anda membutuhkan service discovery dinamis.