Nginx Bisa Serve File Lebih Cepat dari CDN?

Nginx Bisa Serve File Lebih Cepat dari CDN?

Pertanyaan ini sering memicu debat:

“Mana mungkin server sendiri lebih cepat dari CDN?”

Jawaban jujurnya:

  • Bisa
  • Tapi tidak selalu
  • Dan tidak untuk semua orang

Artikel ini membedah kapan Nginx bisa mengalahkan CDN, kenapa bisa terjadi, dan di mana batasnya.


1. CDN Itu Apa (Secara Teknis)?

CDN (Content Delivery Network):

  • Jaringan server global
  • Cache file statis di banyak lokasi
  • User dilayani dari node terdekat

Tujuan utama CDN:

  • Mengurangi latency jarak
  • Mengurangi load origin server
  • Menyerap traffic besar / DDoS

Bukan:

  • Jaminan selalu paling cepat

2. Mitos: CDN = Selalu Lebih Cepat

Ini tidak absolut.

CDN bisa lebih lambat jika:

  • Cache miss
  • Edge jauh dari user
  • TLS handshake berlapis
  • Konfigurasi cache buruk
  • Free tier dibatasi

Dalam kondisi tertentu, Nginx lokal yang optimal bisa menang.


3. Kapan Nginx Bisa Lebih Cepat?

1️⃣ User Dekat dengan Server

Jika:

  • User satu negara / satu region
  • Server on-prem atau VPS lokal

Latency:

  • Server lokal: 2–10 ms
  • CDN edge internasional: 30–80 ms

➡️ Nginx menang telak.


2️⃣ File Tidak Di-cache CDN

CDN tidak selalu cache:

  • File dinamis
  • File tanpa cache header
  • File dengan cookie
  • Authenticated request

Dalam kondisi ini:

  • CDN = proxy biasa
  • Tambahan hop = tambahan latency

3️⃣ CDN Free Tier / Shared Edge

Free tier sering:

  • Shared cache
  • Throttling
  • Eviction agresif

Nginx dedicated:

  • Disk sendiri
  • RAM sendiri
  • Tidak rebutan

4. Kekuatan Nginx dalam Serving File

Nginx unggul karena:

1️⃣ Event-driven, zero-copy

  • sendfile()
  • tcp_nopush
  • tcp_nodelay

Nginx bisa:

Kirim file dari disk ke socket tanpa copy ke user-space


2️⃣ OS Cache (Page Cache)

Linux akan:

  • Cache file di RAM
  • Otomatis
  • Sangat agresif

File populer:

  • Hampir selalu dari RAM
  • Bukan disk

3️⃣ HTTP/2 & HTTP/3

Dengan konfigurasi tepat:

  • Multiplexing
  • Header compression
  • Connection reuse

Untuk banyak file kecil:
➡️ Latency turun drastis


5. Contoh Konfigurasi Static File Nginx Cepat

location /assets/ {
    root /var/www;
    access_log off;

    expires 30d;
    add_header Cache-Control "public, immutable";

    sendfile on;
    tcp_nopush on;
}

Efek:

  • Zero logging overhead
  • Cache agresif di browser
  • Minim syscall

6. Kesalahan Umum yang Membuat CDN Lebih Lambat

  1. Origin lambat → cache miss mahal
  2. TTL terlalu pendek
  3. Cache key salah
  4. Selalu set cookie
  5. HTTPS double terminate

Akibatnya:

CDN hanya jadi proxy mahal


7. CDN vs Nginx: Real Benchmark (Umum)

KondisiNginx LokalCDN
User dekat server🟢 Lebih cepat🔴
User global🔴🟢
File kecil & sering🟢🟢
Cache miss🟢🔴
Traffic spike🔴🟢

8. Hybrid: Nginx + CDN (Pilihan Paling Waras)

Pendekatan realistis:

  • Nginx optimal sebagai origin
  • CDN untuk:
    • Global user
    • Burst traffic
    • DDoS protection

CDN bukan pengganti Nginx, tapi pelindungnya.


9. Kapan TIDAK Perlu CDN?

  • User lokal
  • Traffic kecil–menengah
  • File sering berubah
  • Budget terbatas
  • Latency sudah <10 ms

Dalam kondisi ini:

CDN bisa jadi overkill


10. Kapan CDN Wajib?

  • Audience global
  • Video / large asset
  • Traffic fluktuatif ekstrem
  • Compliance DDoS
  • SLA tinggi

11. Kesalahan Fatal: CDN Dipakai untuk Menutupi Origin Lemah

Jika:

  • Nginx lambat
  • Disk lambat
  • TLS salah
  • Buffer salah

CDN hanya:

Menunda masalah, bukan menyelesaikannya

Origin tetap harus sehat.


12. Kesimpulan

Nginx bisa lebih cepat dari CDN jika:

  • User dekat
  • File cacheable
  • Konfigurasi benar
  • Beban masuk akal

Namun:

  • CDN unggul dalam skala
  • Nginx unggul dalam efisiensi

Kalimat yang paling jujur:

CDN memperluas jangkauan, Nginx memaksimalkan kecepatan.