Kedua-dua Nginx dan Apache adalah produk matang dengan set ciri yang kaya dan prestasi tinggi. Mereka berkongsi asal-usul sumber terbuka biasa, dan anda boleh menggunakan mereka sama ada pada pelayan Windows atau Linux.
Walau bagaimanapun, beberapa perbezaan utama mungkin membuatkan anda memilih satu daripada yang lain.
Sebagai contoh, Apache ialah penyelesaian komprehensif yang menyokong banyak teknologi dan modul yang berbeza di luar kotak. Sebaliknya, Nginx bergantung pada modul pihak ketiga untuk mengembangkan fungsinya.
Untuk melihat pelayan web mana yang lebih sesuai dengan keperluan anda, mari kita menyelami lebih dalam pilihan ini.
Pengenalan
Apache, Pelayan Web Wira Asal
Dicipta pada tahun 1995 oleh Robert McCool dan pada asalnya dipanggil "Apache Projek Pelayan HTTP” (oleh itu namanya), Apache telah direka bentuk untuk mencipta pelayan gred komersial yang teguh yang bebas untuk digunakan, walaupun dengan pengubahsuaian. Ia menjadi popular dengan cepat kerana ia boleh dijalankan pada banyak sistem pengendalian yang berbeza, daripada Unix ke Windows.
Kerana populariti yang sudah lama ini, saya pertimbangkan Apache sebagai pelayan web "wira asal". Ia teguh, didokumentasikan dengan baik dan disokong oleh komuniti pembangun terbuka di bawah naungan Apache Yayasan Perisian.
Nginx, Titan Era Baru
Nginx (disebut sebagai "Enjin X") ialah pelayan proksi HTTP dan terbalik, pelayan proksi mel dan pelayan proksi TCP/UDP generik yang digunakan untuk mengehoskan tapak web dan aplikasi semua saiz. Ia pertama kali dikeluarkan secara terbuka oleh pemaju Rusia Igor Sysoev. Matlamat awal Nginx adalah untuk menyelesaikan masalah C10K itu Apache berjuang untuk menguruskan.
Pada 2019, Nginx menjadi sebahagian daripada F5 Networks. F5 ialah syarikat teknologi yang mengkhusus dalam keselamatan aplikasi, pengurusan berbilang awan dan pencegahan penipuan dalam talian.
Bahagian Pasaran & Ciri
Saham Pasaran
Perbezaan Utama
| Ciri-ciri | Nginx | Apache |
|---|---|---|
| Diperkenalkan | 2004 | 1995 |
| Versi Stabil Semasa | nginx 1.27.0 | Apache 2.4.63 |
| Seni bina | Didorong oleh acara | Didorong oleh proses |
| Open Source | Ya | Ya |
| Pembangunan & Sokongan | Apache Asasi | Rangkaian F5 |
| Platform yang disokong | Terutamanya Unix | Unix dan Windows |
| Berbilang Permintaan Serentak | Ya | Tidak |
| Pemprosesan Kandungan Dinamik Asli | Tidak | Ya |
| Modular | Ya | Ya |
| konfigurasi | Terhad | per-direktori melalui .htaccess |
| Minta Tafsiran | Melepasi URI | Melepasi lokasi sistem Fail |
Seni Bina Teras
Nginx dan Apache berkongsi beberapa persamaan dalam seni bina teras mereka. Sebagai contoh, mereka berdua menggunakan proses master-worker untuk meningkatkan prestasi. Mereka juga mempunyai fail konfigurasi yang serupa. Namun perbezaan dalam gaya seni bina menghasilkan variasi prestasi pandangan luas yang ketara.
Nginx mempunyai seni bina dipacu acara mesra sumber yang menggunakan jumlah memori yang kecil tetapi tetap di bawah beban. Ciri ini menjadikannya sesuai untuk mengehos tapak web dengan tahap trafik yang tinggi atau yang mempunyai lonjakan trafik sekejap-sekejap.
ApacheSeni bina dipacu proses mengendalikan setiap sambungan melalui benang khusus, yang memerlukan lebih banyak memori. Walau bagaimanapun, ia berskala lebih baik di bawah beban berat pada mesin dengan lebih banyak teras CPU dan RAM.
Penggunaan Memori
Nginx terkenal dengan prestasi tinggi dan penggunaan sumber yang rendah. Sebaliknya, Apache boleh menjadi intensif memori, terutamanya apabila menjalankan berbilang blok pelayan. Walaupun kedua-duanya menggunakan memori untuk mengendalikan permintaan HTTP, Nginx lebih ringan.
Reka bentuk Apache bermakna ia menghasilkan satu utas setiap sambungan, dan setiap utas akan menggunakan jumlah RAM tertentu. Apabila trafik meningkat, ini boleh membawa kepada masalah kerana lebih banyak RAM akan diperlukan, terutamanya pada pelayan yang kurang memori. Apache juga mencipta proses baharu untuk setiap permintaan, walaupun daripada pengguna yang sama.
Secara perbandingan, Nginx menggunakan satu proses untuk mengendalikan berbilang sambungan sekaligus.
PHP pengendalian
Kerana kedua-dua pelayan web ini berfungsi terutamanya PHP, cara mereka mengendalikan kod bermakna potensi prestasi yang ketara. Nginx tidak dilaksanakan PHP secara langsung secara lalai. Sebaliknya, ia menghantar permintaan kepada PHP-FPM (Pengurus Proses FastCGI), yang mengendalikan permintaan dan menghantar respons kembali kepada Nginx, yang kemudiannya menyampaikan kandungan kembali kepada pelanggan.
Memandangkan Nginx tidak menunggu jawapan daripada PHP-FPM untuk menyampaikan permintaan lain (begitu juga dengan cara ia tidak menunggu respons daripada pelanggan semasa menyampaikan kandungan statik), Nginx boleh mengendalikan lebih banyak permintaan secara serentak daripada Apache akan dapat menguruskan.
Apache menggunakan modul yang dipanggil mod_php untuk melaksanakan PHP kod. Dalam model ini, setiap kali permintaan HTTP masuk, Apache menghasilkan proses atau utas baharu (bergantung pada cara ia dikonfigurasikan) untuk mengendalikan permintaan itu. Proses ini juga bertanggungjawab untuk mengendalikan sebarang PHP permintaan dalam permintaan itu.
Model ini berfungsi, tetapi ia mempunyai beberapa kelemahan. Untuk satu perkara, melahirkan proses baharu untuk setiap permintaan boleh menjadi intensif pada sistem, terutamanya jika terdapat banyak permintaan serentak. Menjana proses baharu untuk setiap PHP permintaan dalam permintaan adalah lebih intensif kerana sistem pengendalian perlu melahirkan jurubahasa baharu untuk setiap satu.
Penanda Aras Prestasi
Dalam pakej laporan penanda aras prestasi terperinci daripada CyberPanel, beberapa ujian utama menyerlahkan perbezaan antara Nginx dan Apache. Tonton video berikut untuk proses ujian penuh.
Secara ringkasnya:
- Nginx: Mengendalikan sehingga 10,000 sambungan serentak dengan jejak memori yang rendah. Dalam ujian penanda aras, ia menyajikan kandungan statik sehingga 2.5 kali lebih pantas daripada Apache.
- Apache: Sebagai perbandingan, Apache adalah berkesan tetapi kurang cekap daripada Nginx untuk kandungan statik. Dengan seni bina dipacu prosesnya, ApachePrestasi boleh merosot di bawah konkurensi yang tinggi disebabkan oleh overhed menguruskan pelbagai proses.
Nginx lwn Apache khususnya WordPress
Dalam konteks WordPress prestasi, Nginx meningkatkan masa muat dengan ketara, terutamanya untuk kandungan statik, menjadikannya pilihan pilihan untuk trafik tinggi WordPress tapak. Seni bina dipacu peristiwanya membolehkan pengendalian sambungan serentak yang cekap, menghasilkan masa tindak balas yang lebih pantas dan mengurangkan beban pelayan.
Apache, sebaliknya, menawarkan pemprosesan kandungan dinamik yang mantap dengan modul seperti mod_php, yang boleh memudahkan penggunaan untuk WordPress tapak yang banyak bergantung pada kandungan dinamik. Walau bagaimanapun, Nginx secara amnya menyediakan prestasi yang lebih baik dan kecekapan sumber untuk WordPress persekitaran tertumpu pada penyampaian kandungan statik.
Cara Memilih Antara Nginx & Apache
Seperti yang anda lihat, tiada pemenang yang jelas antara raksasa pelayan web ini. Ia bergantung terutamanya pada perkara yang anda perlukan pelayan web untuk diurus.
Pilih Apache jika:
- Sistem Warisan dan Keserasian: Apache sering menjadi pilihan pilihan untuk sistem yang telah lama menggunakannya kerana kehadirannya yang lama di pasaran. Jika infrastruktur anda sangat bergantung pada .htaccess fail untuk konfigurasi setiap direktori, Apache adalah lebih sesuai kerana ia menyokong fail ini secara asli, membenarkan konfigurasi terdesentralisasi dan fleksibiliti dalam persekitaran pengehosan dikongsi.
- Pemprosesan Kandungan Dinamik: Jika aplikasi anda memerlukan pemprosesan berat kandungan dinamik, seperti PHP, Skrip Python atau Ruby, Apache boleh berfaedah kerana keupayaannya untuk membenamkan pemproses secara langsung dalam modulnya. Persediaan ini memudahkan pelaksanaan skrip dinamik terus dalam pelayan.
- Kemudahan Penggunaan dan Dokumentasi: ApachePenerimaan meluas bermakna ia mempunyai sejumlah besar dokumentasi dan sokongan komuniti. Lebih mudah untuk mencari panduan, tutorial dan sokongan Apache-isu berkaitan, menjadikannya pilihan yang lebih mesra pengguna untuk pemula atau mereka yang lebih suka pangkalan pengetahuan yang besar.
Gunakan Nginx jika:
- Prestasi Tinggi dan Scalability: Nginx dioptimumkan untuk mengendalikan bilangan sambungan serentak yang tinggi, menjadikannya sesuai untuk tapak web atau aplikasi dengan trafik tinggi yang memerlukan kebolehskalaan. Seni bina dipacu peristiwa membolehkannya mengendalikan banyak sambungan dengan penggunaan memori yang rendah, menjadikannya cekap untuk penghantaran kandungan statik.
- Pengimbangan Beban dan Proksi Songsang: Nginx selalunya digunakan sebagai proksi terbalik dan pengimbang beban, mengagihkan trafik masuk merentasi berbilang pelayan bahagian belakang. Ciri ini menjadikan Nginx sebagai pilihan terbaik untuk persediaan dan persekitaran ketersediaan tinggi yang memerlukan pengagihan beban yang cekap.
- Penghantaran Kandungan Statik: Jika aplikasi anda menyediakan sejumlah besar kandungan statik, seperti imej, CSS atau JavaFail skrip, Nginx cemerlang kerana kelajuan dan kecekapannya dalam menyampaikan fail statik secara langsung. Seni binanya membolehkan penghantaran cepat sumber statik dengan overhed minimum.
- Kesederhanaan Konfigurasi: Walaupun Nginx tidak menyokong .htaccess fail, sintaks konfigurasinya adalah mudah dan mudah difahami. Kesederhanaan ini boleh memberi manfaat kepada mereka yang ingin mengekalkan konfigurasi pelayan yang bersih dan ringkas.
Penggunaan Gabungan
Untuk banyak persediaan, menggunakan kedua-duanya Apache dan Nginx bersama-sama boleh memanfaatkan kekuatan masing-masing.
Konfigurasi biasa ialah meletakkan Nginx sebagai proksi terbalik di hadapan Apache. Ini membolehkan Nginx mengendalikan kandungan statik dan sambungan serentak dengan cekap, manakala Apache menguruskan pemprosesan kandungan dinamik. Pendekatan hibrid ini boleh mengoptimumkan prestasi dan penggunaan sumber dalam persekitaran web yang kompleks.
Pemikiran Akhir
Sama ada anda berlari Apache atau Nginx akan bergantung pada keperluan anda dan perkakasan yang anda jalankan. Anda boleh menggunakan mana-mana pilihan untuk hidangan PHP laman web. Tetapi ada banyak lagi yang perlu dipertimbangkan daripada sekadar itu.
Jika anda mempunyai laman web yang ringkas, anda mungkin tidak melihat sebarang perbezaan di antara mereka. Tetapi jika tapak anda mendapat lebih banyak trafik dan berkembang, anda perlu mengetahui prestasi setiap pelayan dan skala di bawah beban.