Mengapa saya menjumpai nginx praktikal lebih baik daripada Apache

Mengapa saya menjumpai nginx praktikal lebih baik daripada Apache

Menurut tinjauan pelayan web terkini oleh Netcraft, yang dijalankan menjelang akhir tahun 2017, (tepat pada bulan November), Apache dan Nginx adalah pelayan web sumber terbuka yang paling banyak digunakan di Internet.

Apache adalah pelayan HTTP sumber terbuka untuk sistem operasi dan Windows seperti Unix seperti Unix. Ia direka untuk menjadi pelayan yang selamat, cekap dan boleh diperluas yang menyediakan perkhidmatan HTTP selaras dengan piawaian HTTP yang berlaku.

Sejak dilancarkan, Apache telah menjadi pelayan web paling popular di internet sejak tahun 1996. Ia adalah standard de facto untuk pelayan web di linux dan ekosistem sumber terbuka. Pengguna Linux baru biasanya lebih mudah untuk disediakan dan digunakan.

Nginx (diucapkan 'Enjin-x') adalah pelayan HTTP yang berprestasi tinggi, sumber terbuka, proksi terbalik, dan pelayan proksi IMAP/POP3. Sama seperti Apache, ia juga berjalan pada sistem operasi dan tingkap seperti Unix.

Dikenali dengan prestasi tinggi, kestabilan, konfigurasi mudah, dan penggunaan sumber yang rendah, selama bertahun -tahun menjadi begitu popular dan penggunaannya di Internet sedang menuju ke tahap yang lebih tinggi. Ia kini menjadi pelayan web pilihan di kalangan pentadbir sistem yang berpengalaman atau tuan laman web utama.

Beberapa laman web yang sibuk dikuasakan oleh:

  • Apache ialah: PayPal, BBC.com, BBC.co.UK, SSllabs.com, epal.com ditambah banyak lagi.
  • Nginx adalah: netflix, udemy.com, hulu, pinterest, cloudflare, wordpress.com, github, soundcloud dan banyak lagi.

Terdapat banyak sumber yang telah diterbitkan di web mengenai perbandingan antara Apache dan Nginx (Saya benar -benar bermaksud 'Apache vs nginx'Artikel), banyak yang jelas menerangkan terperinci, ciri dan operasi utama mereka di bawah pelbagai senario termasuk langkah -langkah prestasi dalam tanda aras makmal. Oleh itu itu tidak akan ditangani di sini.

Saya hanya akan berkongsi pengalaman dan pemikiran saya mengenai seluruh perdebatan, setelah mencuba Apache dan Nginx, Kedua -duanya dalam persekitaran pengeluaran berdasarkan keperluan untuk menganjurkan aplikasi web moden, di bahagian seterusnya.

Sebab mengapa saya menjumpai nginx praktikal lebih baik daripada Apache

Berikut adalah sebab -sebab mengapa saya lebih suka pelayan web nginx melalui Apache untuk penghantaran kandungan web moden:

1. Nginx ringan

Nginx adalah salah satu pelayan web ringan di luar sana. Ia mempunyai jejak kaki kecil pada sistem berbanding dengan Apache yang melaksanakan skop fungsi yang luas yang diperlukan untuk menjalankan aplikasi.

Kerana Nginx menyatukan beberapa ciri teras, ia bergantung kepada pelayan web hulu pihak ketiga yang berdedikasi seperti backend Apache, fastcgi, memcached, scgi, dan pelayan uwsgi atau pelayan aplikasi, i.pelayan spesifik bahasa seperti nod.JS, Tomcat, dll.

Oleh itu penggunaan memorinya jauh lebih sesuai untuk penyebaran sumber terhad, daripada Apache.

2. Nginx direka untuk kesesuaian tinggi

Berbanding dengan seni bina berorientasikan atau berorientasikan proses Apache (model-per-koneksi atau model benang-per-koneksi), Nginx Menggunakan seni bina yang didorong oleh peristiwa (asynchronous). Ia menggunakan model proses yang bertanggungjawab yang disesuaikan dengan sumber perkakasan yang ada.

Ia mempunyai proses induk (yang menjalankan operasi istimewa seperti membaca konfigurasi dan mengikat ke pelabuhan) dan yang mewujudkan beberapa proses pekerja dan penolong.

Proses pekerja masing -masing boleh mengendalikan ribuan sambungan HTTP secara serentak, membaca dan menulis kandungan ke cakera, dan berkomunikasi dengan pelayan hulu. Proses Pembantu (Pengurus Cache dan Loader Cache) boleh menguruskan operasi caching kandungan on -cedera.

Ini menjadikan operasinya berskala, dan menghasilkan prestasi tinggi. Pendekatan reka bentuk ini menjadikannya pantas, menguntungkan untuk aplikasi moden. Di samping itu, modul pihak ketiga boleh digunakan untuk melanjutkan fungsi asli dalam nginx.

3. Nginx mudah dikonfigurasikan

Nginx mempunyai struktur fail konfigurasi yang mudah, menjadikannya sangat mudah untuk mengkonfigurasi. Ia terdiri daripada modul yang dikawal oleh arahan yang dinyatakan dalam fail konfigurasi. Di samping itu, arahan dibahagikan kepada arahan blok dan arahan mudah.

Arahan blok ditakrifkan oleh pendakap ( dan ). Sekiranya arahan blok boleh mempunyai arahan lain di dalam pendakap, ia dipanggil konteks seperti peristiwa, http, pelayan, dan lokasi.

http server  

Arahan mudah terdiri daripada nama dan parameter yang dipisahkan oleh ruang dan berakhir dengan titik koma (;).

http server location/## ini arahan mudah dipanggil root root/var/www/hmtl/contoh.com/;  

Anda boleh memasukkan fail konfigurasi tersuai menggunakan arahan termasuk, contohnya.

http server  ## Contoh termasuk fail konfigurasi tambahan termasuk/path/to/config/file/*.Con; Sertakan/Path/To/Config/File/SSL.Con;  

Contoh praktikal untuk saya adalah bagaimana saya berjaya mengkonfigurasi Nginx dengan mudah untuk menjalankan beberapa laman web dengan versi PHP yang berbeza, yang sedikit cabaran dengan Apache.

4. Nginx adalah proksi frontend yang sangat baik

Salah satu kegunaan biasa Nginx menetapkannya sebagai pelayan proksi, dalam hal ini ia menerima permintaan HTTP dari klien dan menyampaikannya kepada pelayan proksi atau hulu yang disebutkan di atas, melalui protokol yang berbeza. Anda juga boleh mengubah suai tajuk permintaan klien yang dihantar ke pelayan proksi, dan mengkonfigurasi penimbunan respons yang datang dari pelayan proksi.

Kemudian ia menerima respons dari pelayan proksi dan menyampaikannya kepada pelanggan. Lebih mudah untuk mengkonfigurasi sebagai pelayan proksi berbanding Apache kerana modul yang diperlukan dalam kebanyakan kes didayakan secara lalai.

5. Nginx luar biasa untuk melayani kandungan statik

Kandungan atau fail statik biasanya fail yang disimpan pada cakera pada komputer pelayan, contohnya fail CSS, fail atau gambar JavaScripts. Mari kita pertimbangkan senario di mana anda menggunakan nginx sebagai frontend untuk nodejs (pelayan aplikasi).

Walaupun pelayan NodeJS (rangka kerja nod khusus) telah membina ciri-ciri untuk pengendalian fail statik, mereka tidak perlu melakukan pemprosesan intensif untuk menyampaikan kandungan bukan dinamik, oleh itu ia praktikal untuk mengkonfigurasi pelayan web untuk melayani kandungan statik secara langsung ke pelanggan.

Nginx Boleh melaksanakan tugas yang lebih baik untuk mengendalikan fail statik dari direktori tertentu, dan boleh menghalang permintaan untuk aset statik daripada mencekik proses pelayan hulu. Ini meningkatkan prestasi keseluruhan pelayan backend secara signifikan.

6. Nginx adalah pengimbang beban yang cekap

Untuk merealisasikan prestasi tinggi dan uptime untuk aplikasi web moden mungkin memanggil untuk menjalankan pelbagai aplikasi aplikasi pada pelayan HTTP tunggal atau diedarkan. Ini mungkin perlu untuk menubuhkan pengimbangan beban untuk mengedarkan beban antara pelayan HTTP anda.

Hari ini, pengimbangan beban telah menjadi pendekatan yang digunakan secara meluas untuk mengoptimumkan penggunaan sumber sistem operasi, memaksimumkan fleksibiliti, memotong latensi, meningkatkan daya tampung, mencapai kelebihan, dan mewujudkan konfigurasi toleransi kesalahan - merentasi pelbagai aplikasi aplikasi.

Nginx menggunakan kaedah pengimbangan beban berikut:

  • Robin pusingan (Kaedah lalai)- Permintaan ke pelayan huluan diedarkan dalam fesyen bulat (mengikut senarai pelayan di kolam hulu).
  • paling tidak disambungkan - Di sini permintaan seterusnya adalah proksi ke pelayan dengan bilangan hubungan aktif yang paling sedikit.
  • IP-Hash - Di sini fungsi hash digunakan untuk menentukan pelayan apa yang harus dipilih untuk permintaan seterusnya (berdasarkan alamat IP klien).
  • Hash generik - Di bawah kaedah ini, pentadbir sistem menentukan hash (atau kunci) dengan teks yang diberikan, pembolehubah permintaan atau runtime, atau gabungannya. Contohnya, kunci mungkin sumber IP dan port, atau URI. Nginx kemudian mengedarkan beban di kalangan pelayan huluan dengan menghasilkan hash untuk permintaan semasa dan meletakkannya terhadap pelayan huluan.
  • Sekurang -kurangnya masa (Nginx Plus) - memberikan permintaan seterusnya kepada pelayan huluan dengan bilangan hubungan terkini tetapi nikmat pelayan dengan masa tindak balas purata terendah.

7. Nginx sangat berskala

Tambahan pula, Nginx adalah aplikasi web yang sangat berskala dan moden terutamanya aplikasi perusahaan permintaan untuk teknologi yang menyediakan prestasi tinggi dan berskala.

Satu syarikat yang mendapat manfaat daripada ciri skalabiliti Nginx yang menakjubkan adalah Cloudflare, Ia telah berjaya meningkatkan aplikasi webnya untuk mengendalikan lebih daripada 15 bilion pandangan halaman bulanan dengan infrastruktur yang agak sederhana, menurut Matthew Prince, Pengasas dan Ketua Pegawai Eksekutif Cloudfare.

Untuk penjelasan yang lebih komprehensif, lihat artikel ini di blog nginx: nginx vs. Apache: Pandangan kami mengenai soalan sedekad.

Kesimpulan

Kedua -duanya Apache dan Nginx tidak dapat digantikan antara satu sama lain, mereka mempunyai titik yang kuat dan lemah. Walau bagaimanapun, Nginx menawarkan teknologi yang kuat, fleksibel, berskala dan selamat untuk laman web moden dan aplikasi web yang boleh dipercayai dan cekap. Apa yang anda ambil? Beritahu kami melalui borang maklum balas di bawah.