Apache vs Nginx: Perbandingan Praktis - MastahTeknik

Breaking

Senin, 03 Juni 2019

Apache vs Nginx: Perbandingan Praktis


Apache dan Nginx adalah dua server web open source paling umum di dunia. Bersama-sama, mereka bertanggung jawab untuk melayani lebih dari 50% lalu lintas di internet. Kedua solusi ini mampu menangani beragam beban kerja dan bekerja dengan perangkat lunak lain untuk menyediakan tumpukan web yang lengkap.
Meskipun Apache dan Nginx memiliki banyak kualitas, mereka tidak boleh dianggap sebagai sepenuhnya dapat dipertukarkan. Masing-masing unggul dengan caranya sendiri dan penting untuk memahami situasi di mana Anda mungkin perlu mengevaluasi kembali server web pilihan Anda. Artikel ini akan dikhususkan untuk diskusi tentang bagaimana setiap server bertumpuk di berbagai bidang.
Apache
Apache HTTP Server dibuat oleh Robert McCool pada tahun 1995 dan telah dikembangkan di bawah arahan Apache Software Foundation sejak 1999. Karena server web HTTP adalah proyek asli yayasan dan sejauh ini merupakan perangkat lunak yang paling populer, sering kali disebut sebagai "Apache".
Server web Apache telah menjadi server paling populer di internet sejak tahun 1996. Karena popularitas ini, Apache mendapat manfaat dari dokumentasi yang hebat dan dukungan terintegrasi dari proyek perangkat lunak lain.
Apache sering dipilih oleh administrator karena fleksibilitas, kekuatan, dan dukungan luasnya. Ia dapat dikembangkan melalui sistem modul yang dapat dimuat secara dinamis dan dapat memproses sejumlah besar bahasa yang ditafsirkan tanpa menghubungkan ke perangkat lunak yang terpisah.
Nginx
Pada tahun 2002, Igor Sysoev mulai bekerja pada Nginx sebagai jawaban untuk masalah C10K, yang merupakan tantangan bagi server web untuk mulai menangani sepuluh ribu koneksi bersamaan sebagai persyaratan untuk web modern. Rilis publik awal dibuat pada tahun 2004, memenuhi tujuan ini dengan mengandalkan arsitektur yang tidak sinkron dan berdasarkan peristiwa.
Nginx telah tumbuh dalam popularitas sejak dirilis karena pemanfaatan sumber daya yang ringan dan kemampuannya untuk skala dengan mudah pada perangkat keras minimal. Nginx unggul dalam menyajikan konten statis dengan cepat dan dirancang untuk meneruskan permintaan dinamis ke perangkat lunak lain yang lebih cocok untuk keperluan itu.
Nginx sering dipilih oleh administrator karena efisiensi sumber daya dan responsifnya di bawah beban. Advokat menyambut fokus Nginx pada server web inti dan fitur proxy.


Arsitektur Penanganan Koneksi

Apache
Apache menyediakan berbagai modul multi-pemrosesan (Apache menyebut MPM ini) yang menentukan bagaimana permintaan klien ditangani. Pada dasarnya, ini memungkinkan administrator untuk mengganti arsitektur penanganan koneksinya dengan mudah. Ini adalah:
  • mpm_prefork : Modul pemrosesan ini memunculkan proses dengan satu utas masing-masing untuk menangani permintaan. Setiap anak dapat menangani satu koneksi pada satu waktu. Selama jumlah permintaan lebih sedikit dari jumlah proses, MPM ini sangat cepat.
  • mpm_worker : Modul ini memunculkan proses yang masing-masing dapat mengelola beberapa utas. Masing-masing utas ini dapat menangani satu koneksi.
  • mpm_event : Modul ini mirip dengan modul pekerja di sebagian besar situasi, tetapi dioptimalkan untuk menangani koneksi yang tetap hidup.
Seperti yang Anda lihat, Apache menyediakan arsitektur yang fleksibel untuk memilih koneksi yang berbeda dan algoritma penanganan permintaan. Pilihan yang disediakan sebagian besar merupakan fungsi dari evolusi server dan meningkatnya kebutuhan akan konkurensi karena lanskap internet telah berubah.
Nginx
Nginx muncul setelah Apache, dengan lebih banyak kesadaran tentang masalah konkurensi yang akan menghadapi situs pada skala. Dengan memanfaatkan pengetahuan ini, Nginx dirancang dari bawah ke atas untuk menggunakan algoritme penanganan koneksi asinkron, non-pemblokiran, yang digerakkan oleh peristiwa.
Nginx memunculkan proses pekerja, yang masing-masing dapat menangani ribuan koneksi. Proses pekerja menyelesaikan ini dengan menerapkan mekanisme putaran cepat yang terus-menerus memeriksa dan memproses peristiwa. Memisahkan pekerjaan yang sebenarnya dari koneksi memungkinkan setiap pekerja untuk mempedulikan dirinya dengan koneksi hanya ketika sebuah acara baru telah dipicu.
Setiap koneksi yang ditangani oleh pekerja ditempatkan dalam loop acara di mana mereka ada dengan koneksi lain. Dalam loop, acara diproses secara tidak sinkron, memungkinkan pekerjaan ditangani secara non-pemblokiran. Ketika koneksi ditutup, itu dihapus dari loop.
Gaya pemrosesan koneksi ini memungkinkan Nginx untuk skala sangat jauh dengan sumber daya yang terbatas. Karena server single-threaded dan proses tidak muncul untuk menangani setiap koneksi baru, memori dan penggunaan CPU cenderung tetap relatif konsisten, bahkan pada saat beban berat.

Konten Statis vs Dinamis

Apache
Server Apache dapat menangani konten statis menggunakan metode berbasis file konvensionalnya. Kinerja operasi ini terutama merupakan fungsi dari metode MPM yang dijelaskan di atas.
Apache juga dapat memproses konten dinamis dengan menyematkan prosesor bahasa yang bersangkutan ke setiap instance pekerjanya. Ini memungkinkannya untuk mengeksekusi konten dinamis dalam server web itu sendiri tanpa harus bergantung pada komponen eksternal. Prosesor dinamis ini dapat diaktifkan melalui penggunaan modul yang dapat dimuat secara dinamis.
Kemampuan Apache untuk menangani konten dinamis secara internal berarti konfigurasi pemrosesan dinamis cenderung lebih sederhana. Komunikasi tidak perlu dikoordinasikan dengan perangkat lunak tambahan dan modul dapat dengan mudah diganti jika persyaratan konten berubah.
Nginx
Nginx tidak memiliki kemampuan untuk memproses konten dinamis secara asli. Untuk menangani PHP dan permintaan lain untuk konten dinamis, Nginx harus beralih ke prosesor eksternal untuk dieksekusi dan menunggu konten yang dirender dikirim kembali. Hasilnya kemudian dapat disampaikan ke klien.
Untuk administrator, ini berarti bahwa komunikasi harus dikonfigurasi antara Nginx dan prosesor melalui salah satu protokol yang Nginx tahu bagaimana berbicara (http, FastCGI, SCGI, uWSGI, memcache). Hal ini dapat sedikit mempersulit, terutama ketika mencoba mengantisipasi jumlah koneksi yang diperbolehkan, karena koneksi tambahan akan digunakan untuk setiap panggilan ke prosesor.
Namun, metode ini memiliki beberapa kelebihan juga. Karena penerjemah dinamis tidak tertanam dalam proses pekerja, overhead-nya hanya akan ada untuk konten dinamis. Konten statis dapat disajikan dengan cara yang mudah dan penerjemah hanya akan dihubungi jika diperlukan. Apache juga dapat berfungsi dengan cara ini, tetapi menghapus manfaat di bagian sebelumnya.

Konfigurasi Terdistribusi vs Terpusat

Apache
Apache menyertakan opsi untuk memperbolehkan konfigurasi tambahan berdasarkan per direktori dengan memeriksa dan menafsirkan arahan dalam file tersembunyi di dalam direktori konten itu sendiri. File-file ini dikenal sebagai .htaccessfile.
Karena file-file ini berada di dalam direktori konten itu sendiri, ketika menangani permintaan, Apache memeriksa setiap komponen path ke file yang diminta untuk .htaccessfile dan menerapkan arahan yang ditemukan di dalamnya. Ini secara efektif memungkinkan konfigurasi server web yang terdesentralisasi, yang sering digunakan untuk mengimplementasikan penulisan ulang URL, pembatasan akses, otorisasi dan otentikasi, bahkan kebijakan caching.
Sementara contoh-contoh di atas semuanya dapat dikonfigurasi dalam file konfigurasi Apache utama, .htaccessfile memiliki beberapa keuntungan penting. Pertama, karena ini ditafsirkan setiap kali ditemukan di sepanjang jalur permintaan, mereka diimplementasikan segera tanpa memuat ulang server. Kedua, memungkinkan untuk memungkinkan pengguna yang tidak memiliki hak istimewa untuk mengontrol aspek-aspek tertentu dari konten web mereka sendiri tanpa memberi mereka kendali atas seluruh file konfigurasi.
Nginx
Nginx tidak menafsirkan .htaccessfile, juga tidak menyediakan mekanisme untuk mengevaluasi konfigurasi per-direktori di luar file konfigurasi utama. Ini mungkin kurang fleksibel daripada model Apache, tetapi memang memiliki kelebihan tersendiri.
Peningkatan yang paling menonjol dari .htaccesssistem konfigurasi tingkat direktori adalah peningkatan kinerja. Untuk pengaturan khas Apache yang memungkinkan .htaccessdalam direktori apa pun, server akan memeriksa file-file ini di setiap direktori induk yang mengarah ke file yang diminta, untuk setiap permintaan. Jika satu atau lebih .htaccessfile ditemukan selama pencarian ini, mereka harus dibaca dan ditafsirkan. Dengan tidak mengizinkan penggantian direktori, Nginx dapat melayani permintaan lebih cepat dengan
melakukan pencarian direktori tunggal dan membaca file untuk setiap permintaan (dengan asumsi bahwa file tersebut ditemukan dalam struktur direktori konvensional).
Keuntungan lain terkait keamanan. Mendistribusikan akses konfigurasi tingkat direktori juga mendistribusikan tanggung jawab keamanan kepada pengguna individu, yang mungkin tidak dipercaya untuk menangani tugas ini dengan baik. Memastikan bahwa administrator mempertahankan kontrol atas seluruh server web dapat mencegah beberapa kesalahan langkah keamanan yang mungkin terjadi ketika akses diberikan kepada pihak lain.

Dukungan, Kompatibilitas, Ekosistem, dan Dokumentasi

Apache
Karena Apache telah lama populer, dukungan untuk server cukup banyak. Ada perpustakaan besar dokumentasi pihak pertama dan ketiga yang tersedia untuk server inti dan untuk skenario berbasis tugas yang melibatkan menghubungkan Apache dengan perangkat lunak lain.
Seiring dengan dokumentasi, banyak alat dan proyek web menyertakan alat untuk bootstrap sendiri dalam lingkungan Apache. Ini mungkin termasuk dalam proyek itu sendiri, atau dalam paket yang dikelola oleh tim pengemasan distribusi Anda.
Apache, secara umum, akan mendapat lebih banyak dukungan dari proyek pihak ketiga hanya karena pangsa pasarnya dan lamanya waktu telah tersedia. Administrator juga agak lebih mungkin memiliki pengalaman bekerja dengan Apache tidak hanya karena prevalensinya, tetapi juga karena banyak orang memulai dalam skenario shared-hosting yang hampir secara eksklusif mengandalkan Apache karena .htaccesskemampuan manajemen terdistribusi.
Nginx
Nginx mengalami peningkatan dukungan karena lebih banyak pengguna yang mengadopsinya untuk profil kinerjanya, tetapi masih ada beberapa yang harus dilakukan di beberapa bidang utama.
Di masa lalu, sulit untuk menemukan dokumentasi berbahasa Inggris yang komprehensif tentang Nginx karena fakta bahwa sebagian besar pengembangan awal dan dokumentasi berada di Rusia. Ketika minat pada proyek tumbuh, dokumentasi telah diisi dan sekarang ada banyak sumber daya administrasi di situs Nginx dan melalui pihak ketiga.
Sehubungan dengan aplikasi pihak ketiga, dukungan dan dokumentasi menjadi semakin tersedia, dan pengelola paket mulai, dalam beberapa kasus, untuk memberikan pilihan antara konfigurasi otomatis untuk Apache dan Nginx. Bahkan tanpa dukungan, mengonfigurasi Nginx agar berfungsi dengan perangkat lunak alternatif biasanya mudah selama proyek itu sendiri mendokumentasikan persyaratannya (izin, header, dll.).

Tidak ada komentar:

Posting Komentar

Post Top Ad

Responsive Ads Here