Server Apache vs Nginx: Lowdown Pada Kedua Jenis Server Ini
Diterbitkan: 2022-01-03Internet berjalan pada kumpulan server. Namun, ini memiliki pengaturan yang berbeda dari mesin desktop standar. Sysadmin atau pengembang back-end yang cerdas akan mengoptimalkan pilihan ini untuk kebutuhan yang mereka miliki. Cara utama untuk melakukannya adalah melalui pilihan perangkat lunak server. Satu perbandingan populer di area ini adalah Apache vs Nginx.
Ini karena sejumlah alasan, tetapi jumlah penggunaan dan umur panjang adalah dua yang utama. Nginx lebih baru dan bisa dibilang lebih mampu untuk standar web modern. Namun, Apache juga tidak menarik, dan mampu melayani situs web ke jutaan pengguna di seluruh dunia.
Dalam posting ini, kami akan memberi Anda perbandingan Apache vs Nginx. Kita akan melihat elemen tingkat permukaan seperti popularitas kedua jenis server. Namun, kami juga akan menggali fitur teknis dan pertimbangan untuk masing-masing juga. Pada akhirnya, Anda akan mengetahui seluk beluk kedua jenis perangkat lunak tersebut, dan mana yang terbaik untuk server Anda.
Apa itu Apache dan Nginx?
Membaca artikel ini berarti Anda mungkin memahami bahwa server web memerlukan perangkat lunak khusus untuk memberikan kinerja yang optimal. Meskipun bagian ini tidak akan membahas apa itu perangkat lunak server atau fungsinya secara umum, kami akan membahas dua solusi utama untuk server Anda:
- Apache. Ini adalah perangkat lunak bebas dan sumber terbuka yang telah diinstal sebelumnya dengan sebagian besar 'distro' Linux. Sudah ada sejak 1995, dan karena dua faktor ini, memiliki posisi terdepan di pasar.
- Nginx. Meskipun masih relatif kecil dibandingkan dengan perangkat lunak server lain, Nginx memiliki banyak pengguna. Pada penulisan saat ini, hampir bersama-sama dengan Apache untuk perangkat lunak server paling populer (lebih banyak lagi nanti).
Perlu dicatat bahwa Apache telah memimpin perangkat lunak server selama beberapa dekade, dan telah melihat pangsa pasar yang besar untuk saat itu. Namun, Nginx sekarang menjadi yang terdepan, meskipun tidak banyak.

CAPTION: Garis biru di sini dari google Trends mewakili penelusuran untuk Apache sejak 2004, sedangkan garis merah terkait dengan Nginx.
Adapun apa yang dibawa Apache dan Nginx ke meja, ini bisa mengisi beberapa buku tentang masalah ini. Namun, kami akan mencoba melakukan ini dalam kurang dari 2.000 kata – dimulai dengan kumpulan fitur umum keduanya.
Fitur Umum Apache dan Nginx
Karena Apache dan Nginx adalah perangkat lunak server web HTTP, Anda akan menemukan banyak kesamaan. Misalnya, keduanya open-source, yang berarti mereka akan bekerja pada berbagai sistem. Dengan ekstensi, keduanya fleksibel dan dapat diperpanjang, tetapi ada tujuan yang berbeda untuk setiap jenis server.
Namun, Apache vs Nginx bukanlah perbandingan yang benar, karena kedua perangkat lunak tersebut mendekati proses konfigurasi server web dengan cara yang berbeda. Pada kenyataannya, keduanya akan lebih sesuai dengan aplikasi yang berbeda.
Selama sisa artikel ini, kami akan menunjukkannya kepada Anda melalui perincian detail teknis untuk Apache dan Nginx. Inilah yang akan kita bahas:
- Rincian teknis dari setiap jenis perangkat lunak server, yang mencakup penanganan permintaan dan koneksi, teknologi caching, dan banyak lagi.
- Mengonfigurasi dan memperluas Apache, termasuk detail tentang file dan modul
.htaccess
-nya. - Bagaimana Anda mengonfigurasi Nginx, dan ekstensibilitasnya.
Ini sepertinya tidak banyak untuk dipertimbangkan, tetapi Anda dapat membongkar masing-masing ke dalam sejumlah sub-bagian lainnya. Kami akan melakukan ini, dimulai dengan perbedaan teknis.
Perbedaan Teknis Antara Apache dan Nginx
Secara umum, Apache dan Nginx mengambil jalur yang hampir unik dan eksklusif untuk mencapai tujuan yang sama dari server web yang optimal. Jika Anda membandingkan masing-masing secara luas, Anda akan melihat betapa berbedanya mereka:
- Apache menggunakan arsitektur 'proses-driven', sedangkan Nginx menggunakan 'event-driven'.
- Sementara kedua jenis file statis server (meskipun dengan cara yang berbeda), Nginx tidak server konten dinamis.
- Setiap jenis perangkat lunak menafsirkan permintaan HTTP dengan cara inti yang berbeda.
Kita akan melihat beberapa aspek ini, dimulai dengan pertimbangan penanganan koneksi.
Penanganan Koneksi
Anda akan menemukan bahwa Apache vs Nginx sangat mementingkan bagaimana setiap jenis menangani koneksi dan permintaan. Misalnya, Apache menggunakan pendekatan berbasis proses, di mana ia akan membuat permintaan baru untuk setiap utas menggunakan modul pemrosesan yang disebut mpm_prefork
. Ini bisa cepat jika jumlah permintaan lebih sedikit daripada jumlah proses, tetapi ada peningkatan kinerja setelah ini.
Faktanya, Apache menawarkan banyak fleksibilitas untuk membuat algoritme penanganan koneksi yang sesuai dengan kebutuhan Anda menggunakan mpm_prefork
, mpm_worker
, dan mpm_event
. Sebaliknya, desain Nginx sedemikian rupa sehingga mencoba mengurangi aspek kinerja negatif yang dimiliki Apache.
Ini dilakukan melalui cara memunculkan proses pekerja berdasarkan peristiwa. Ini berarti Nginx sangat bagus untuk penskalaan, karena dapat mengelola banyak permintaan dalam satu utas.
Minta Interpretasi
Baik Apache dan Nginx juga mengambil pendekatan berbeda untuk menafsirkan permintaan yang akan diterima server. Misalnya, Nginx menggunakan Uniform Resource Identifier (URI) dari permintaan untuk menerjemahkannya ke elemen fisik sistem file.
Anda dapat melihat ini dalam format beberapa blok konfigurasi, seperti server
dan location
. Mereka bekerja sama untuk mengurai URI dan mengubahnya menjadi sesuatu di dalam sistem file.
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Sebaliknya, akar Apache sebagai perangkat lunak server web 'murni' berarti ia mengasumsikan dan bertindak atas dasar bahwa setiap permintaan adalah sumber daya dalam sistem file. Namun, Apache juga dapat bekerja dengan URI yang permintaannya lebih abstrak. Meskipun demikian, dokumentasi memperingatkan agar tidak menggunakan apa pun selain metode berbasis file.
Performa Statis vs Dinamis
Dalam hal kinerja, Apache vs Nginx merupakan pertimbangan penting bagi hampir setiap pengguna. Dalam konteksnya, perbandingan bermuara pada bagaimana setiap jenis perangkat lunak menyajikan konten statis dan dinamis.
Karena arsitektur bawaan Apache bekerja dengan sistem file secara langsung, arsitektur ini bagus dalam menyajikan konten statis. Namun, itu juga akan memproses konten dinamis di dalam server, yang merupakan implementasi simile yang juga fleksibel jika Anda perlu menukar modul berdasarkan persyaratan yang Anda miliki.

Sebagai perbandingan, Nginx tidak memproses konten dinamis sama sekali. Ini lebih rumit, karena Nginx harus meneruskan permintaan ini ke pekerja atau protokol eksternal. Meski begitu, Anda akan menemukan lebih sedikit overhead kinerja, dan Nginx dapat menggunakan protokol lain dengan kemampuan beradaptasi yang lebih besar.
Untuk konten statis, ini bisa semudah Apache, dan dalam beberapa kasus merupakan opsi yang berkinerja lebih baik. Ini karena Nginx dapat menghubungi juru bahasa saat diperlukan, bukan sebagai bagian yang tidak terpisahkan dari kinerja keseluruhan perangkat lunak server.
Model Konfigurasi Terdistribusi Apache
Tidak mengherankan bahwa Apache dan Nginx keduanya memiliki pendekatan yang berbeda untuk konfigurasi servernya. Singkatnya, konfigurasi Apache vs Nginx bergantung pada apakah Anda dapat melakukannya di tingkat direktori.
Apache menggunakan model terdistribusi, yang berarti Anda dapat mengonfigurasi server berdasarkan per direktori. Anda akan melakukannya melalui file .htaccess
. Apache akan memeriksa setiap komponen jalur file yang diminta untuk file .htaccess
, dan menjalankan arahan di dalamnya.

Menurut pendapat kami, file .htaccess
jauh lebih fleksibel daripada sistem lainnya. Ini cepat untuk menemukan, membuka, dan mengedit. Kekuatan di ujung jari Anda untuk melakukan banyak tindakan hebat sungguh luar biasa. Anda juga akan menemukan bahwa server Apache akan memproses file .htaccess
setiap kali ditemukan, tanpa perlu memuat ulang server.
Ini juga luar biasa jika Anda perlu membiarkan beberapa pengguna mengontrol aspek situs mereka dalam memengaruhi seluruh konfigurasi server. Inilah sebabnya mengapa server Apache menjadi andalan platform shared hosting, bersama dengan sistem modulnya yang fleksibel.
Modul Apache
Anda dapat memuat dan membongkar modul secara dinamis menggunakan Apache. Ini mirip dengan menggunakan plugin dan tema dalam WordPress: Fungsionalitas inti Apache melakukan langkah-langkah mendasar, sementara modul aktif membantu Anda menciptakan pengalaman unik.
Modul-modul ini dapat mencakup banyak bidang, dan ada banyak yang tersedia. Modul seperti mod_php
dapat mengubah fungsionalitas inti server, sedangkan mod_rewrite
yang populer memungkinkan Anda melakukan banyak tugas lain:
- Membatasi alamat IP.
- Mengubah folder rumah untuk situs Anda.
- Melakukan 301 redirect.
- Menyetel halaman beranda default.
Antara .htaccess
dan sistem modul dinamis, Apache mewakili cara yang jelas bagi sebagian besar pengguna untuk mengotak-atik dan mengoptimalkan server web dan situs.
Model Konfigurasi Terpusat Nginx
Nginx mengambil pendekatan terpusat untuk konfigurasi server. Ini berarti ada satu file konfigurasi (berakhir dengan ekstensi .conf
). Terkadang sulit ditemukan tergantung pada struktur server Anda.
Ini memiliki beberapa kelemahan yang jelas bagi pemilik situs pemula yang ingin membuat perubahan pada server. Untuk situs di shared hosting, hampir tidak mungkin untuk mengkonfigurasi server. Ada juga fleksibilitas yang jauh lebih sedikit.
Namun, ada juga beberapa keuntungan, berdasarkan kinerja. Karena Nginx hanya memiliki satu lokasi untuk file konfigurasi, dan Apache berpotensi menggunakan beberapa lokasi, hanya akan ada satu pencarian. Dengan ekstensi, akan ada lebih sedikit hit kinerja untuk menemukan file konfigurasi itu juga.
Anda juga akan menemukan bahwa karena konfigurasinya terpusat, pemilik situs tidak akan memiliki tanggung jawab untuk mengelola aspek terkait keamanan. Ini adalah keuntungan lain untuk pendekatan Nginx, karena tanggung jawab keamanan berada di pundak administrator sistem saja.
Modul Nginx
Dapat dikatakan bahwa sistem modul Nginx sama sekali tidak permisif atau fleksibel seperti Apache, meskipun menawarkan fungsionalitas yang sama. Misalnya, ambil aturan pengalihan Nginx:
server { listen 80; server_name www.olddomain.com; return 301 $scheme://www.newdomain.com$request_uri; }
Ini karena Anda tidak dapat memuatnya sebagai elemen dinamis dengan Nginx. Untuk kembali ke analogi WordPress kami, ini seperti harus menginstal ulang seluruh situs Anda untuk menonaktifkan plugin.
Di permukaan, ini tampaknya tidak bisa diterapkan, dan tampaknya menjadi kerugian besar. Namun, apa yang Anda kurang dalam fleksibilitas, Anda memperoleh stabilitas dan fungsionalitas inti. Jika Anda mengetahui apa yang dibutuhkan server Anda pada waktu pembuatan, Anda dapat menyertakan semua komponen dan modul tersebut.
Ada aspek keamanan yang perlu dipertimbangkan juga. Karena Anda tidak akan menukar modul dinamis masuk dan keluar dari sistem Anda, Anda akan tahu apa yang dilakukan dan dapat dilakukan setiap elemen. Itu membuat struktur dan arsitektur server Anda jelas dan lebih mudah dirawat, serta lebih berkinerja.
Mengapa Anda Menggunakan Apache atau Nginx
Singkatnya, Apache vs Nginx bukanlah keputusan yang jelas. Sebagai permulaan, pendapat umum tentang Nginx sebagai pemain yang lebih baik daripada Apache adalah menyesatkan. Jika Anda menyiapkan server Apache dengan baik, performanya sama seperti server Nginx yang setara.
Apache sangat bagus untuk menyajikan konten statis dan dinamis dengan cara yang sederhana. Ini menawarkan kekuatan luar biasa bagi mereka yang baru mengelola server, fleksibilitas dalam konfigurasi. Secara umum, Anda memerlukan lebih sedikit pengetahuan teknis untuk mengonfigurasi server Apache daripada Nginx.
Namun, kinerja adalah tempat Nginx bersinar. Pengaturan arsitekturnya memastikan bahwa ia dapat mencapai lebih banyak per siklus prosesor daripada server Apache. Ini terlepas dari fleksibilitas yang lebih rendah dalam pengaturan.
Dalam beberapa kasus, Anda mungkin tidak mendapatkan pilihan Apache vs Nginx, terutama jika Anda menggunakan shared host. Namun, jika Anda melakukannya, pilihannya akan tergantung pada keahlian, tujuan, dan kebutuhan Anda.
Ringkasan
Pilihan perangkat lunak server Anda penting, dan Anda memiliki banyak sekali pilihan yang Anda inginkan. Pada kenyataannya, Anda tidak akan memilih jenis server dari bidang kiri. Sebaliknya, Anda akan sering memilih dari dua atau tiga jenis. Apache vs Nginx adalah perbandingan yang sering dipertimbangkan, karena keduanya menawarkan kinerja dan keandalan jangka panjang yang menonjol.
Artikel ini telah melihat bagaimana Apache vs Nginx membandingkan di dua front ini dan banyak lagi. Ada banyak pertimbangan teknis untuk ditelaah, dan ini akan menjadi faktor pilihan Anda lebih dari seberapa populer perangkat lunak server tertentu di antara komunitas.
Apakah Anda memiliki pendapat tentang Apache vs Nginx? Bagikan pemikiran Anda dengan kami di bagian komentar di bawah!