Nginx vs Apache: Mana yang Lebih Baik untuk Performa Tinggi?

Nginx vs Apache: Mana yang Lebih Baik untuk Performa Tinggi?

Update 22/11/25 · Read 6 min

Apache HTTP Server dan Nginx merupakan dua pilihan yang paling populer dan banyak digunakan oleh developer maupun system administrator di seluruh dunia. Keduanya memiliki sejarah panjang dan basis pengguna yang besar, serta mendukung berbagai sistem operasi, termasuk Linux, BSD, dan Windows.

Meski fungsinya sama—menyajikan konten web ke pengguna—cara keduanya mengelola koneksi dan request sangat berbeda, yang berdampak langsung pada performa server, penggunaan RAM, dan kemampuan menangani traffic tinggi. Hal ini menjadi sangat krusial ketika sebuah situs atau aplikasi harus melayani lebih dari 1500 request simultan, misalnya pada e-commerce saat flash sale, portal berita dengan traffic puncak, atau aplikasi SaaS dengan banyak user aktif.

Apache dikenal fleksibel, modular, dan kompatibel dengan konfigurasi per-directory seperti .htaccess, sehingga memudahkan pengelolaan di hosting shared. Namun, model multi-process / multi-thread yang digunakannya menyebabkan penggunaan RAM yang tinggi ketika jumlah worker meningkat, sehingga scaling pada traffic tinggi membutuhkan konfigurasi yang cermat, misalnya menggunakan MPM Event dan PHP-FPM untuk aplikasi PHP.

Di sisi lain, Nginx menggunakan event-driven, asynchronous, dan non-blocking architecture. Hal ini memungkinkan satu worker Nginx menangani ribuan koneksi simultan dengan penggunaan RAM yang relatif rendah, sehingga sangat cocok untuk server dengan traffic tinggi, static content, atau sebagai reverse proxy. Namun, Nginx tidak mendukung modul runtime per-directory seperti Apache, sehingga konfigurasi lebih “rigid” dan semua rewrite atau pengaturan harus dilakukan melalui file server block.

Artikel ini akan membahas perbandingan Apache dan Nginx dari beberapa aspek penting:

  • Arsitektur: bagaimana masing-masing server menangani request dan koneksi.
  • Performa: kemampuan menangani traffic tinggi (>1500 request simultan), penggunaan RAM, dan response time.
  • Konfigurasi optimal: pengaturan Apache MPM Event + PHP-FPM dan Nginx + PHP-FPM untuk performa maksimal.
  • Skenario penggunaan: kapan harus memilih Apache, Nginx, atau kombinasi keduanya.

Artikel ini juga menyertakan contoh server dengan 8 GB RAM, MySQL, dan PHP-FPM, sehingga pembaca bisa melihat perkiraan penggunaan memori, jumlah worker, dan kemampuan handling request simultan pada kondisi riil. Dengan demikian, pembaca dapat membuat keputusan teknis berdasarkan data nyata dan perhitungan kapasitas server, bukan sekadar teori.


1️⃣ Arsitektur

Apache

Apache menggunakan model proses/thread-based dengan beberapa MPM (Multi-Processing Module):

  1. Prefork

    • Setiap request diproses child process terpisah.

    • Cocok untuk aplikasi PHP lama yang tidak thread-safe.

Contoh nyata: Jika ServerLimit=10 dan MaxRequestWorkers=50, setiap proses child memakan ±100 MB RAM → 10 × 100 MB = 1 GB RAM untuk worker saja.

  1. Worker

    • Thread-based, satu child bisa memiliki banyak thread.

    • Lebih hemat RAM daripada prefork.

Contoh: 10 proses × 25 threads = 250 worker, RAM digunakan ±2–3 GB tergantung request PHP.

  1. Event

    • Thread-based + asynchronous keep-alive.

    • Efisien untuk traffic tinggi, idle thread tidak memblokir koneksi baru.

Contoh: server 8 GB RAM, PHP-FPM max_children 45, Apache Event MPM bisa handle ±1500 simultan tanpa OOM.

Kelebihan:

READ :  Migrasi PHP Apache (mod_php) ke PHP-FPM + Apache MPM Event

Fleksibel, banyak modul, kompatibel dengan .htaccess.

Kekurangan:

  • Overhead memori tinggi per worker.
  • Scaling pada traffic tinggi terbatas jika RAM kecil.

Nginx

Nginx menggunakan event-driven, asynchronous, non-blocking architecture:

  • Satu worker bisa menangani ribuan koneksi simultan.

  • Tidak spawn worker per request → scaling lebih efisien.

Contoh nyata:

  • Server 4 CPU cores, worker_processes auto → 4 worker.
  • worker_connections = 1024 → 4 × 1024 = 4096 koneksi simultan bisa ditangani.

Kelebihan: hemat RAM, performa tinggi, ideal untuk reverse proxy dan static content. Kekurangan: konfigurasi kurang fleksibel, modul runtime tidak bisa dimuat via .htaccess.


2️⃣ Performa untuk Traffic Tinggi (>1500 Simultan)

Faktor Apache Nginx Contoh nyata
Model concurrency Multi-process/thread Event-driven Apache Event MPM: worker spawn sesuai traffic; Nginx: 4 worker × 1024 connections = 4096
RAM usage Lebih tinggi (~80–100MB per worker) Lebih rendah (~5–10MB per worker) Server 8 GB RAM: Apache max_children 80 → ±7,6 GB untuk PHP-FPM saja; Nginx ±50 MB untuk worker
Static content Baik Sangat baik Nginx bisa serve file .jpg/.css 2–3x lebih cepat
Dynamic content Baik dengan PHP-FPM Baik dengan PHP-FPM, lebih sedikit overhead PHP-FPM max_children 45 → 45 worker x 100MB ≈ 4,5 GB
Load spike handling Terbatas, worker harus spawn → delay Sangat efisien, tidak spawn worker Traffic tiba-tiba naik 2000 request → Apache butuh spawn worker, Nginx langsung handle

Kesimpulan:

  • Untuk traffic 1500+ simultan, Nginx lebih stabil dan hemat RAM.

  • Apache masih bisa digunakan dengan MPM Event + PHP-FPM, jika server memiliki RAM cukup.


3️⃣ Konfigurasi Optimal

Apache (MPM Event + PHP-FPM)

<IfModule mpm_event_module>
ServerLimit 10
StartServers 3
MinSpareThreads 50
MaxSpareThreads 150
ThreadsPerChild 25
MaxRequestWorkers 250
MaxConnectionsPerChild 1500
</IfModule>

PHP-FPM Example:

pm = dynamic
pm.max_children = 45       ; sesuai RAM tersisa
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

Contoh nyata:

  • Server 8 GB RAM + MySQL 3 GB → sisa ±4–4,5 GB untuk PHP-FPM → max_children 45 worker.

  • StartServers 10 → awal cukup, worker tambahan spawn otomatis sesuai traffic.


Nginx + PHP-FPM

worker_processes auto;
worker_connections 1024;

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Contoh nyata:

  • CPU 4 cores → worker_processes auto = 4.
  • worker_connections = 1024 → total koneksi simultan 4096.
  • RAM PHP-FPM tetap ±4–4,5 GB, Nginx hanya menggunakan ±50 MB worker.

4️⃣ Kasus Penggunaan

Skenario  Apache *  Nginx *  KET
Legacy apps dengan modul .htaccess WordPress di Apache bisa pakai .htaccess; Nginx perlu rewrite manual
Traffic tinggi + static content ⚠️ Nginx bisa handle 2000 request simultan file CSS/JS dengan RAM <100 MB
Reverse proxy / load balancer ⚠️ Nginx reverse proxy untuk backend Apache/PHP-FPM, load balancing 3 node
VPS RAM terbatas ⚠️ 2 GB RAM VPS → Nginx bisa handle 500–1000 koneksi simultan, Apache cepat OOM
Hosting shared / modul banyak ⚠️ Apache lebih mudah untuk shared hosting, Nginx harus konfigurasi manual

5️⃣ Kesimpulan

  1. Traffic tinggi & simultan (>1500 connections) → Nginx lebih stabil dan hemat RAM.
  2. Legacy Apache apps / modul banyak → tetap bisa pakai Apache MPM Event + PHP-FPM, RAM cukup.
  3. Kombinasi optimal → Nginx sebagai reverse proxy + Apache backend, menggabungkan kelebihan keduanya.
READ :  Nginx: Web Server Super Cepat, Andal – Instalasi & Konfigurasi

Contoh road map :

Client → Nginx → (static content? serve langsung)
→ (dynamic content? proxy) → Apache → PHP-FPM → Client

FAQs

Q1: Bisa Apache handle 1500+ request simultan?

  • Ya, dengan MPM Event + PHP-FPM, RAM cukup, tapi lebih berat dibanding Nginx.

Q2: Apakah Nginx bisa langsung jalankan PHP?

  • Tidak, selalu pakai FastCGI (PHP-FPM).

Q3: Apa keuntungan event-driven?

  • Menangani ribuan koneksi dengan jumlah worker terbatas → efisien RAM.

Q4: Mana lebih mudah konfigurasi modul runtime?

  • Apache lebih fleksibel (misal .htaccess), Nginx harus konfigurasi manual.

Q5: Mana lebih hemat RAM?

  • Nginx, karena worker tidak spawn per request.

Q6: Kombinasi Nginx + Apache?

  • Nginx handle static & proxy, Apache handle PHP/legacy → cocok traffic tinggi.

Q7: Apakah Nginx lebih cepat untuk static file?

  • Ya, biasanya 2–3x lebih cepat daripada Apache.

Q8: Jika server 8GB RAM + MySQL 3GB, max_children 80 aman?

  • Tidak aman, bisa OOM. Lebih aman max_children ≈ 45 atau Nginx + PHP-FPM ondemand.