Mengapa Saya Menemukan Nginx Secara Praktis Lebih Baik Daripada Apache


Menurut survei server web terbaru oleh Netcraft yang dilakukan menjelang akhir tahun 2017, (tepatnya pada bulan November), Apache dan Nginx merupakan server web open source yang paling banyak digunakan di Internet.

Apache adalah server HTTP sumber terbuka gratis untuk sistem operasi mirip Unix dan Windows. Ini dirancang untuk menjadi server yang aman, efisien, dan dapat diperluas yang menyediakan layanan HTTP yang sinkron dengan standar HTTP yang berlaku.

Sejak diluncurkan, Apache telah menjadi server web paling populer di Internet sejak tahun 1996. Ini adalah standar de facto untuk server Web di Linux dan ekosistem sumber terbuka. Pengguna Linux baru biasanya merasa lebih mudah untuk mengatur dan menggunakannya.

Nginx (diucapkan ‘Engine-x’) adalah server HTTP gratis, sumber terbuka, dan berkinerja tinggi, proksi terbalik, dan server proksi IMAP/POP3. Sama seperti Apache, ia juga berjalan pada sistem operasi mirip Unix dan Windows.

Terkenal karena kinerjanya yang tinggi, stabilitas, konfigurasi yang sederhana, dan konsumsi sumber daya yang rendah, selama bertahun-tahun ia menjadi begitu populer dan penggunaannya di Internet semakin meningkat. Sekarang ini adalah server web pilihan di antara administrator sistem berpengalaman atau master web dari situs-situs terkemuka.

Beberapa situs sibuk yang didukung oleh:

  • Apache adalah: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com dan masih banyak lagi.
  • Nginx adalah: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud dan banyak lainnya.

Ada banyak sumber daya yang telah diterbitkan di web mengenai perbandingan antara Apache dan Nginx (maksud saya artikel 'Apache Vs Nginx'), banyak yang dengan jelas menjelaskan secara rinci, fitur-fitur utama dan pengoperasiannya dalam berbagai skenario termasuk pengukuran kinerja dalam tolok ukur laboratorium. Oleh karena itu, hal itu tidak akan dibahas di sini.

Saya hanya akan membagikan pengalaman dan pemikiran saya tentang keseluruhan perdebatan, setelah mencoba Apache dan Nginx, keduanya dalam lingkungan produksi berdasarkan persyaratan untuk meng-hosting aplikasi web modern, pada kesempatan berikutnya bagian.

Alasan Mengapa Saya Menemukan Nginx Secara Praktis Lebih Baik Daripada Apache

Berikut adalah alasan mengapa saya lebih memilih server web Nginx daripada Apache untuk pengiriman konten web modern:

1. Nginx Ringan

Nginx adalah salah satu server web berbobot ringan yang ada. Ini memiliki jejak kecil pada sistem dibandingkan dengan Apache yang mengimplementasikan fungsionalitas luas yang diperlukan untuk menjalankan aplikasi.

Karena Nginx menyatukan beberapa fitur inti, Nginx bergantung pada server web upstream pihak ketiga khusus seperti backend Apache, FastCGI, Memcached, SCGI, dan server uWSGI atau server aplikasi, yaitu server khusus bahasa seperti Node.js, Tomcat , dll.

Oleh karena itu penggunaan memorinya jauh lebih cocok untuk penerapan sumber daya terbatas, dibandingkan Apache.

2. Nginx Dirancang untuk Konkurensi Tinggi

Berbeda dengan arsitektur Apache yang berulir atau berorientasi proses (model proses‑per‑koneksi atau thread‑per‑koneksi), Nginx menggunakan arsitektur yang dapat diskalakan dan digerakkan oleh peristiwa (asinkron). Ini menggunakan model proses yang bertanggung jawab yang disesuaikan dengan sumber daya perangkat keras yang tersedia.

Ia memiliki proses master (yang melakukan operasi istimewa seperti membaca konfigurasi dan mengikat port) dan yang menciptakan beberapa proses pekerja dan pembantu.

Proses pekerja masing-masing dapat menangani ribuan koneksi HTTP secara bersamaan, membaca dan menulis konten ke disk, dan berkomunikasi dengan server upstream. Proses pembantu (manajer cache dan pemuat cache) dapat mengelola operasi cache konten pada disk.

Hal ini membuat operasinya terukur, dan menghasilkan kinerja tinggi. Pendekatan desain ini semakin membuatnya cepat dan cocok untuk aplikasi modern. Selain itu, modul pihak ketiga dapat digunakan untuk memperluas fungsionalitas asli di Nginx.

3. Nginx Mudah Dikonfigurasi

Nginx memiliki struktur file konfigurasi sederhana, sehingga sangat mudah untuk dikonfigurasi. Ini terdiri dari modul-modul yang dikendalikan oleh arahan yang ditentukan dalam file konfigurasi. Selain itu, arahan dibagi menjadi arahan blok dan arahan sederhana.

Direktif blok didefinisikan dengan tanda kurung kurawal ({ dan }). Jika direktif blok dapat memiliki direktif lain di dalam kurung kurawal, maka disebut konteks seperti peristiwa, http, server, dan lokasi.

http {
	server {
		
	}
}

Direktif sederhana terdiri dari nama dan parameter yang dipisahkan oleh spasi dan diakhiri dengan titik koma (;).

http {
	server {
		location / {
				
				## this is simple directive called root
			   	root  /var/www/hmtl/example.com/;

		}
		
	}
}

Anda dapat memasukkan file konfigurasi khusus menggunakan direktif include, misalnya.

http {
	server {

	}
	## examples of including additional config files
	include  /path/to/config/file/*.conf;
	include  /path/to/config/file/ssl.conf;
}

Contoh praktis bagi saya adalah bagaimana saya dapat dengan mudah mengkonfigurasi Nginx untuk menjalankan beberapa situs web dengan versi PHP yang berbeda, yang merupakan sedikit tantangan dengan Apache.

4. Nginx adalah Proxy Frontend yang Luar Biasa

Salah satu kegunaan umum Nginx adalah menyiapkannya sebagai server proxy, dalam hal ini Nginx menerima permintaan HTTP dari klien dan meneruskannya ke server proxy atau upstream yang disebutkan di atas, melalui protokol yang berbeda. Anda juga dapat mengubah header permintaan klien yang dikirim ke server proksi, dan mengonfigurasi buffering respons yang datang dari server proksi.

Kemudian menerima respons dari server proxy dan meneruskannya ke klien. Jauh lebih mudah untuk dikonfigurasikan sebagai server proxy dibandingkan dengan Apache karena modul yang diperlukan dalam banyak kasus diaktifkan secara default.

5. Nginx Luar Biasa dalam Menyajikan Konten Statis

Konten atau file statis biasanya merupakan file yang disimpan pada disk di komputer server, misalnya file CSS, file JavaScript, atau gambar. Mari pertimbangkan skenario di mana Anda menggunakan Nginx sebagai frontend untuk Nodejs (server aplikasi).

Meskipun server Nodejs (khususnya kerangka kerja Node) memiliki fitur bawaan untuk penanganan file statis, server tersebut tidak perlu melakukan pemrosesan intensif untuk mengirimkan konten non-dinamis, oleh karena itu secara praktis bermanfaat untuk mengonfigurasi server web agar menyajikan konten statis secara langsung ke klien.

Nginx dapat melakukan pekerjaan yang jauh lebih baik dalam menangani file statis dari direktori tertentu, dan dapat mencegah permintaan aset statis menghambat proses server upstream. Ini secara signifikan meningkatkan kinerja server backend secara keseluruhan.

6. Nginx adalah Load Balancer yang Efisien

Untuk mewujudkan kinerja tinggi dan waktu aktif aplikasi web modern mungkin memerlukan menjalankan beberapa contoh aplikasi pada satu server HTTP atau terdistribusi. Hal ini mungkin memerlukan pengaturan penyeimbangan beban untuk mendistribusikan beban antar server HTTP Anda.

Saat ini, penyeimbangan beban telah menjadi pendekatan yang banyak digunakan untuk mengoptimalkan pemanfaatan sumber daya sistem operasi, memaksimalkan fleksibilitas, mengurangi latensi, meningkatkan throughput, mencapai redundansi, dan menetapkan konfigurasi toleransi kesalahan – di berbagai contoh aplikasi.

Nginx menggunakan metode penyeimbangan beban berikut:

  • round-robin (metode default) – permintaan ke server upstream didistribusikan secara round-robin (sesuai urutan daftar server di kumpulan upstream).
  • terkoneksi paling sedikit – di sini permintaan berikutnya diproksikan ke server dengan jumlah koneksi aktif paling sedikit.
  • ip-hash – di sini fungsi hash digunakan untuk menentukan server mana yang harus dipilih untuk permintaan berikutnya (berdasarkan alamat IP klien).
  • Hash umum – dalam metode ini, administrator sistem menentukan hash (atau kunci) dengan teks tertentu, variabel permintaan atau waktu proses, atau kombinasi keduanya. Misalnya, kuncinya mungkin berupa IP dan port sumber, atau URI. Nginx kemudian mendistribusikan beban di antara server upstream dengan menghasilkan hash untuk permintaan saat ini dan menempatkannya di server upstream.
  • Waktu paling sedikit (Nginx Plus) – menetapkan permintaan berikutnya ke server upstream dengan jumlah koneksi saat ini paling sedikit namun lebih memilih server dengan waktu respons rata-rata terendah.

7. Nginx Sangat Skalabel

Selain itu, Nginx adalah aplikasi web yang sangat skalabel dan modern, terutama aplikasi perusahaan yang memerlukan teknologi yang memberikan kinerja dan skalabilitas tinggi.

Salah satu perusahaan yang mendapat manfaat dari fitur skalabilitas Nginx yang luar biasa adalah CloudFlare, perusahaan ini telah berhasil meningkatkan skala aplikasi webnya untuk menangani lebih dari 15 miliar tampilan halaman bulanan dengan infrastruktur yang relatif sederhana, menurut Matthew Prince, salah satu pendiri dan CEO CloudFare.

Untuk penjelasan lebih komprehensif, lihat artikel ini di blog Nginx: NGINX vs. Apache: Pandangan Kami tentang Pertanyaan Berusia Satu Dekade.

Kesimpulan

Baik Apache dan Nginx tidak dapat digantikan satu sama lain, keduanya memiliki kelebihan dan kekurangan masing-masing. Namun, Nginx menawarkan teknologi canggih, fleksibel, terukur, dan aman untuk mendukung situs web dan aplikasi web modern secara andal dan efisien. Apa pendapatmu? Beri tahu kami melalui formulir umpan balik di bawah.