Mengapa saya menemukan nginx praktis lebih baik dari apache

Mengapa saya menemukan nginx praktis lebih baik dari apache

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

Apache adalah server http open-source gratis untuk sistem operasi seperti unix dan windows. Itu dirancang untuk menjadi server yang aman, efisien dan dapat diperluas yang menyediakan layanan HTTP secara sinkron dengan standar HTTP yang berlaku.

Sejak diluncurkan, Apache telah menjadi server web paling populer di internet sejak 1996. Ini adalah standar de facto untuk server web di linux dan ekosistem open source. Pengguna Linux baru biasanya merasa lebih mudah diatur dan digunakan.

Nginx (diucapkan 'Engine-x') adalah server http berkinerja tinggi, open-source, berkinerja tinggi, proxy terbalik, dan server proxy IMAP/POP3. Sama seperti Apache, itu juga berjalan pada sistem operasi dan windows seperti Unix.

Terkenal karena kinerja tinggi, stabilitas, konfigurasi sederhana, dan konsumsi sumber daya yang rendah, selama bertahun -tahun menjadi sangat populer dan penggunaannya di internet menuju ke tingkat yang lebih tinggi. Sekarang adalah server web pilihan di antara administrator sistem yang berpengalaman atau master web dari situs teratas.

Beberapa situs sibuk didukung oleh:

  • Apache adalah: paypal, bbc.com, BBC.bersama.Inggris, Ssllabs.com, apel.com plus lebih banyak.
  • Nginx adalah: Netflix, Udemy.com, Hulu, Pinterest, Cloudflare, WordPress.com, github, soundcloud dan banyak lainnya.

Ada banyak sumber daya yang sudah diterbitkan di web tentang perbandingan antara Apache Dan Nginx (Maksud saya benar -benarApache vs nginx'Artikel), banyak di antaranya dengan jelas menjelaskan ke detail, fitur dan operasinya teratas di bawah berbagai skenario termasuk ukuran kinerja dalam tolok ukur laboratorium. Oleh karena itu itu tidak akan dibahas di sini.

Saya hanya akan berbagi pengalaman dan pemikiran saya tentang seluruh debat, setelah mencoba Apache Dan Nginx, Baik di lingkungan produksi berdasarkan persyaratan untuk hosting aplikasi web modern, di bagian selanjutnya.

Alasan mengapa saya menemukan nginx secara praktis lebih baik daripada Apache

Berikut ini adalah alasan mengapa saya lebih suka server web nginx daripada apache untuk pengiriman konten web modern:

1. Nginx ringan

Nginx adalah salah satu server web ringan di luar sana. Ini memiliki jejak kaki kecil pada suatu sistem dibandingkan dengan Apache yang mengimplementasikan ruang lingkup fungsionalitas yang diperlukan untuk menjalankan aplikasi.

Karena Nginx menyatukan beberapa fitur inti, itu bergantung pada server web hulu pihak ketiga yang berdedikasi seperti Apache Backend, Fastcgi, Memcached, SCGI, dan server UWSGI atau server aplikasi, I.E Bahasa server spesifik seperti node.JS, Tomcat, dll.

Oleh karena itu penggunaan memorinya jauh lebih cocok untuk penyebaran sumber daya yang terbatas, daripada Apache.

2. Nginx dirancang untuk konkurensi tinggi

Berlawanan dengan arsitektur berarvead atau berorientasi proses Apache (model proses-per-koneksi atau koneksi utas)), Nginx menggunakan arsitektur yang dapat diskalakan, digerakkan oleh peristiwa (asinkron). Ini menggunakan model proses yang bertanggung jawab yang disesuaikan dengan sumber daya perangkat keras yang tersedia.

Ini memiliki proses master (yang melakukan operasi istimewa seperti membaca konfigurasi dan mengikat ke 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 hulu. Proses Helper (Cache Manager dan Cache Loader) dapat mengelola operasi caching konten on -disk.

Ini membuat operasinya dapat diukur, dan menghasilkan kinerja tinggi. Pendekatan desain ini selanjutnya membuatnya cepat, menguntungkan 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 yang sederhana, membuatnya sangat mudah dikonfigurasi. Ini terdiri dari modul yang dikendalikan oleh arahan yang ditentukan dalam file konfigurasi. Selain itu, arahan dibagi menjadi arahan blok dan arahan sederhana.

Arahan blok didefinisikan oleh kawat gigi ( Dan ). Jika arahan blok dapat memiliki arahan lain di dalam kawat gigi, itu disebut konteks seperti peristiwa, http, server, dan lokasi.

http server  

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

http server location/## Ini adalah arahan sederhana yang disebut root root/var/www/hmtl/contoh.com/;  

Anda dapat menyertakan file konfigurasi khusus menggunakan Directive, misalnya.

http server  ## contoh termasuk file konfigurasi tambahan termasuk/path/to/config/file/*.conf; Sertakan/path/to/config/file/ssl.conf;  

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

4. Nginx adalah proxy frontend yang sangat baik

Salah satu penggunaan umum Nginx menyiapkannya sebagai server proxy, dalam hal ini ia menerima permintaan HTTP dari klien dan meneruskannya ke server proksi atau hulu yang disebutkan di atas, atas berbagai protokol. Anda juga dapat memodifikasi header permintaan klien yang dikirim ke server proksi, dan mengkonfigurasi buffering tanggapan yang berasal dari server proksi.

Kemudian menerima tanggapan dari server proksi dan menyerahkannya kepada klien. Bubur lebih mudah dikonfigurasi sebagai server proxy dibandingkan dengan Apache karena modul yang diperlukan dalam kebanyakan kasus diaktifkan secara default.

5. Nginx luar biasa untuk melayani konten statis

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

Meskipun NodeJS Server (khususnya kerangka kerja simpul) telah membangun fitur untuk penanganan file statis, mereka tidak perlu melakukan beberapa pemrosesan intensif untuk mengirimkan konten non-dinamis, oleh karena itu praktis bermanfaat untuk mengkonfigurasi server web untuk melayani 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 tersedak proses server hulu. Ini secara signifikan meningkatkan kinerja keseluruhan server backend.

6. Nginx adalah penyeimbang beban yang efisien

Untuk mewujudkan kinerja tinggi dan waktu kerja untuk aplikasi web modern dapat meminta untuk menjalankan beberapa contoh aplikasi pada server HTTP tunggal atau terdistribusi. Ini pada gilirannya mungkin mengharuskan untuk mengatur penyeimbangan beban untuk mendistribusikan beban di antara server HTTP Anda.

Saat ini, penyeimbang beban telah menjadi pendekatan yang banyak digunakan untuk mengoptimalkan pemanfaatan sumber daya sistem operasi, memaksimalkan fleksibilitas, mengurangi latensi, meningkatkan throughput, mencapai redundansi, dan membangun konfigurasi toleran kesalahan - di berbagai contoh aplikasi beberapa aplikasi.

Nginx menggunakan metode penyeimbangan beban berikut:

  • Round-robin (Metode default)- Permintaan ke server hulu didistribusikan secara round-robin (dalam urutan daftar server di kolam hulu).
  • Terkecil - Di sini permintaan berikutnya diproksi ke server dengan sedikit koneksi aktif.
  • IP-Hash - Di sini fungsi hash digunakan untuk menentukan server apa yang harus dipilih untuk permintaan berikutnya (berdasarkan alamat IP klien).
  • Hash generik - Di bawah metode ini, administrator sistem menentukan hash (atau kunci) dengan teks yang diberikan, variabel permintaan atau runtime, atau kombinasinya. Misalnya, kunci mungkin merupakan Sumber IP dan port, atau URI. Nginx kemudian mendistribusikan beban di antara server hulu dengan menghasilkan hash untuk permintaan saat ini dan menempatkannya terhadap server hulu.
  • Waktu terkecil (Nginx plus) - Menetapkan permintaan berikutnya ke server hulu dengan jumlah koneksi saat ini yang paling sedikit tetapi mendukung server dengan waktu respons rata -rata terendah.

7. Nginx sangat diskalakan

Lebih-lebih lagi, Nginx adalah aplikasi web yang sangat terukur dan modern terutama permintaan aplikasi perusahaan untuk teknologi yang memberikan kinerja dan skalabilitas tinggi.

Satu perusahaan yang mendapat manfaat dari fitur skalabilitas luar biasa Nginx adalah Cloudflare, Ini telah berhasil mengukur aplikasi webnya untuk menangani lebih dari 15 miliar tampilan halaman bulanan dengan infrastruktur yang relatif sederhana, menurut Pangeran Matthew, salah satu pendiri dan CEO Cloudfare.

Untuk penjelasan yang lebih komprehensif, lihat artikel ini di Nginx Blog: Nginx vs. Apache: Pandangan kami tentang pertanyaan yang sudah tua satu dekade.

Kesimpulan

Keduanya Apache Dan Nginx tidak dapat digantikan satu sama lain, mereka memiliki titik yang kuat dan lemah. Namun, Nginx Menawarkan teknologi yang kuat, fleksibel, dapat diskalakan, dan aman untuk secara andal dan efisien menghidupkan situs web modern dan aplikasi web. Apa pendapat Anda? Beri tahu kami melalui formulir umpan balik di bawah ini.