Rumah > Artikel > Operasi dan penyelenggaraan > Apakah perbezaan antara Nginx dan Apache?
Nginx, seperti Apache, adalah perisian pelayan HTTP Kedua-duanya menggunakan reka bentuk struktur modular dalam pelaksanaan fungsian Kedua-duanya menyokong antara muka bahasa biasa, seperti PHP, Perl, Python, dll., dan juga menyokong ke hadapan dan ke belakang proksi, hos maya, penulisan semula URL, penghantaran termampat, penghantaran disulitkan SSL, dsb.
Perbezaan utama antara Apache dan NGINX ialah seni bina reka bentuk mereka. Apache menggunakan pendekatan dipacu proses dan mencipta urutan baharu untuk setiap permintaan. NGINX menggunakan seni bina dipacu peristiwa untuk mengendalikan berbilang permintaan dalam urutan.
Pelayan HTTP Apache ialah pelayan web merentas platform sumber terbuka, juga dikenali sebagai "httpd" dan Apache. Beliau menguruskan jenama dan perkhidmatan Apache Software Foundation. Pelayan dibangunkan dan diselenggara oleh komuniti pembangun terbuka di bawah ASF. Apache dijalankan terutamanya pada Linux dan menguasai 46% tapak web dunia. Ia adalah komponen utama timbunan LAMP (Linux, Apache, MySQL, PHP).
Apakah NGINX? Disebut? Ia disebut "Enjin X" Ia adalah pelayan web yang dikeluarkan pada tahun 2004 oleh Igor Sisoev. Hari ini, ia lebih daripada sekadar pelayan web! Pada mulanya, kebanyakan orang menggunakan Nginx sebagai pelengkap kepada Apache Ia digunakan terutamanya untuk menyampaikan fail statik, tetapi hari ini, ia telah berkembang menjadi pelayan web lengkap yang mengendalikan keseluruhan tugas pelayan web. Nginx sering digunakan sebagai proksi terbalik, pengimbang beban, proksi mel dan cache HTTP. Apache dan Nginx adalah kedua-dua pelayan web yang paling biasa untuk Linux. Bersama-sama, mereka melayani lebih daripada 50% trafik rangkaian.
Walaupun Apache dan NGINX berkongsi banyak kualiti, mereka berbeza dalam banyak cara. Masing-masing cemerlang dengan cara tersendiri dan mempunyai tujuan dan skema tersendiri. Untuk memahami perbezaan dan membuat kesimpulan, mari kita lihat perbandingan terperinci, hujung ke hujung di bawah. Kami juga menyebut pemenang setiap mata perbandingan pada akhir setiap mata.
Apabila bercakap tentang Apache dan Nginx, perbezaan asasnya terletak pada seni bina reka bentuk mereka. Ini bermakna mereka berbeza dalam cara mereka mengendalikan sambungan dan trafik dan bertindak balas terhadap keadaan trafik yang berbeza. Satu ialah pendekatan dipacu proses dan satu lagi ialah seni bina dipacu peristiwa.
Apache
Kaedah dipacu proses, mencipta urutan baharu untuk setiap permintaan. Apache mengambil pendekatan berbilang benang. Ia menawarkan pelbagai modul pemprosesan berbilang. Pra-modul ini pada asasnya ialah tiga jenis algoritma pengendalian permintaan. Setiap satu digunakan untuk keperluan pelayan yang berbeza. MM (Modul Pemprosesan Berbilang) menyediakan seni bina yang fleksibel untuk memilih sambungan yang berbeza dan algoritma pemprosesan yang berbeza. Selain itu, versi Apache 2 yang berbeza menggunakan modul perarakan yang berbeza. Tiga Apache MM utama ialah: MPM proses (pra-fork), MPM pekerja dan MPM acara. Secara lalai, Apache 2.2 dikonfigurasikan dalam mod prefork (mpm_prefork). Ia bertindak balas kepada satu set proses, setiap satunya boleh mengendalikan satu permintaan pada satu masa. Dengan kata lain, Apache mencipta utas baharu setiap kali untuk mengendalikan setiap permintaan sambungan. Benang ialah urutan terkecil arahan pengaturcaraan yang boleh diuruskan secara bebas oleh penjadual. Dalam kebanyakan kes, benang adalah komponen proses. Walau bagaimanapun, seni bina asas Apache boleh mengakibatkan penggunaan sumber yang banyak dan, oleh itu, boleh menyebabkan masalah pelayan (seperti kelambatan).
Pendekatan dipacu peristiwa, memproses berbilang permintaan dalam satu urutan, Nginx menggunakan seni bina dipacu peristiwa dan memproses permintaan secara tidak segerak. Ia direka bentuk untuk menggunakan algoritma pengendalian sambungan dipacu peristiwa yang tidak menyekat. Oleh itu, prosesnya boleh mengendalikan beribu-ribu sambungan (permintaan) dalam satu utas pemprosesan. Modul proses sambungan ini membolehkan Nginx berfungsi dengan cepat dan meluas dengan sumber yang terhad. Selain itu, anda boleh menggunakan Nginx pada sistem berkuasa rendah dan sistem yang berjalan di bawah beban berat.
Pemenangnya ialah NGiNX – strukturnya ringan dan seni binanya jauh lebih pantas daripada Apache. Prestasi Dari segi Apache vs Nginx, kedua-dua pelayan web mengendalikan kandungan statik dan dinamik secara berbeza. Mereka mengatakan Nginx lebih baik apabila mengendalikan kandungan statik, mari lihat sama ada itu benar!
Apache
menggunakan pendekatan berasaskan fail untuk menyampaikan kandungan statik atau fail biasanya disimpan pada cakera pada pelayan komputer. Fail, seperti fail CSS, fail JavaScript atau imej. Apache menggunakan pendekatan berasaskan fail tradisionalnya kepada kandungan statik.
Nginx
Nginx ialah abang besar dalam menyediakan kandungan statik. Memandangkan seni bina reka bentuk Nginx lebih berkebolehan mengendalikan beban, ia lebih pantas dalam menyajikan kandungan statik. Ia melakukan 2.5x lebih pantas daripada Apache berdasarkan penanda aras sehingga 1,000 sambungan serentak. Nginx menyediakan sumber statik, dan PHP tidak perlu mengetahui perkara ini. Apache, sebaliknya, mengendalikan semua permintaan ini dengan overhed yang mahal. Ini menjadikan Nginx lebih cekap dan kurang menuntut sumber sistem.
Imej kecil ini menunjukkan permintaan untuk kandungan statik, diproses dalam beberapa saat. Nginx jelas mengatasi Apache di sini!
Apache
Apache boleh mengendalikan kandungan dinamik dalam pelayan web itu sendiri tanpa kebergantungan mana-mana luaran komponen. Jadi, ia boleh mengendalikan anda sendiri. Bercakap tentang prestasi Apache vs Nginx: Nginx hampir sama (jika tidak lebih baik) apabila mempertimbangkan pemprosesan kandungan dinamik. Di bawah ialah perbandingan bilangan permintaan kandungan dinamik. Tidak ada perbezaan dari segi penampilan.
Nginx
Ia tidak mengendalikan kandungan dinamik, bercakap tentang kandungan dinamik, Nginx tidak boleh mengendalikan kandungan dinamik dalam pelayan web seperti kandungan Apache. Semua permintaan dengan kandungan web dinamik dihantar ke proses luaran (cth. PHP-FPM) untuk dilaksanakan. Nginx menunggu kandungan akhir dikembalikan dan dihantar kepada pelanggan. Untuk idea yang jelas, lihat imej ini:
Apabila digunakan dengan pengendali SCGI dan modul FastCGI, NGINX boleh menyampaikan kandungan dinamik. Statik: Nginx mengalahkan Apache apabila ia berkaitan dengan kandungan statik. Dinamik: Kedua-duanya pandai mengendalikan kandungan dinamik.
Sokongan OS boleh menjadi perkara penting untuk dipertimbangkan, terutamanya apabila membandingkan Apache vs Nginx. Tetapi, kedua-duanya hampir serupa di sini.
Apache
menyokong semua sistem seperti Unix, termasuk Linux dan BSD. Ia menyokong sepenuhnya MS-WindowsApache yang dijalankan pada pelbagai sistem seperti Unix seperti Linux atau BSD, dan menyokong sepenuhnya Microsoft Windows.
Nginx
Menyokong hampir semua sistem pengendalian seperti Unix. Separa disokong pada Windows. Ia juga berjalan pada beberapa sistem berasaskan Unix moden dan mempunyai beberapa sokongan untuk Windows, tetapi prestasi Windowsnya tidak seteguh platform lain.
Pemenangnya ialah Apache di sini.
Apache vs Nginx ialah topik yang sesuai. Konfigurasi mereka menjadikan mereka berbeza antara satu sama lain, menjadikannya sama menarik. Mari lihat konfigurasi siapa yang lebih mudah dan cepat.
Apache
Membenarkan konfigurasi tambahan berdasarkan setiap direktori melalui fail .htaccess. Seni bina ini membenarkan pengguna yang tidak mempunyai hak untuk mengawal aspek tertentu tapak web mereka tanpa memberi mereka kebenaran untuk mengedit konfigurasi utama. Yang ini besar!
Nginx
tidak membenarkan konfigurasi tambahan Sebaliknya, ia mempunyai kelemahan. Ia tidak menyediakan konfigurasi tambahan. Walau bagaimanapun, ia berfungsi untuk kelebihan anda kerana ini meningkatkan prestasi. Dengan tidak membenarkan konfigurasi direktori, ia boleh menyampaikan permintaan lebih cepat daripada Apache. Ia tidak memerlukan mencari fail .htaccess dan mentafsir permintaan buatan pengguna.
Pemenang: Jika konfigurasi menjadi kebimbangan, gunakan Apache jika konfigurasi menjadi kebimbangan, gunakan Apache. Jika kelajuan adalah NGinx.
Dalam perbahasan Apache vs Nginx, kaedah menjelaskan permintaan ialah topik yang menarik untuk dibandingkan. Mereka semua mengendalikan dan mentafsir permintaan dengan cara yang sama sekali berbeza.
Pendekatan mereka yang berbeza menjadikan mereka unik dan juga menjadikan satu lebih baik sedikit daripada yang lain. Mari kita terokainya!
Apache
melepasi lokasi sistem fail, memberikan keupayaan untuk mentafsir permintaan. Sumber fizikal sebagai lokasi sistem fail mungkin memerlukan penilaian yang lebih abstrak. Ia melepasi permintaan sebagai lokasi sistem fail.
Sudah tentu, Apache menggunakan lokasi URI, tetapi ia biasanya digunakan untuk sumber yang lebih abstrak. Apache menggunakan blok direktori di bawah akar dokumen semasa membuat atau mengkonfigurasi hos maya.
Keutamaan untuk lokasi sistem fail ini juga boleh dilihat apabila menggunakan fail .htaccess untuk mengatasi konfigurasi direktori tertentu.
Nginx
Dengan mentafsir permintaan melalui URI, Nginx dicipta sebagai pelayan web dan pelayan proksi terbalik. Oleh kerana keperluan seni bina ini, Nginx berfungsi terutamanya dengan mata anda. Tukar kepada sistem jika perlu. Ia tidak menyediakan mekanisme untuk menentukan konfigurasi. Untuk direktori sistem fail, luluskan URInya sendiri. Melepasi permintaan (URI) dan bukannya lokasi sistem fail membolehkan Nginx berjalan dengan mudah dalam pelayan web dan proksi. Ia hanya dikonfigurasikan dengan cara reka letak bertindak balas kepada corak permintaan pembezaan.
Ia tidak menyemak sistem fail sehingga ia bersedia untuk melayani permintaan yang menjelaskan mengapa ia tidak melaksanakan sebarang bentuk fail .htaccess. Reka bentuk mentafsir permintaan sebagai lokasi URI ini membolehkan Nginx bertindak dengan mudah bukan sahaja sebagai pelayan web, tetapi juga sebagai pelayan proksi, pengimbang beban dan cache HTTP.
Selain itu, dalam pertandingan Apache vs Nginx, NGINX sekali lagi menang dari segi kadar pemindahan (seberapa pantas data dihantar dari pelayan kepada pelanggan). Dalam kebanyakan kes, Nginx menang dengan jumlah yang saksama 500/100.
Pemenang: Nampaknya Nginx menang kerana ia mentafsir dan bertindak balas dengan lebih pantas.
Kedua-duanya boleh dilanjutkan melalui sistem modul. Tetapi cara kerja mereka berbeza. Mari bandingkan modul berfungsi dua pelayan web: Apache vs Nginx!
Apache
60 modul rasmi boleh dimuatkan secara dinamik yang boleh menghidupkan/mematikan pelayan Apache dengan set ciri yang kaya yang boleh dipasang dengan memasang salah satu daripada 60 rasmi modul untuk membolehkan ciri-ciri ini. Terdapat banyak lagi modul tidak rasmi yang boleh didapati dengan mudah di Internet.
Sistem modulnya membolehkan anda memuatkan atau memunggah modul secara dinamik mengikut keperluan anda. Modulnya boleh dihidupkan atau dimatikan untuk menambah atau mengalih keluar fungsi dan menyambung ke pelayan utama.
Ringkasnya, Apache mempunyai beberapa modul berfungsi untuk memenuhi keperluan anda, tetapi kebanyakannya tidak digunakan dengan kerap.
Nginx
Modul teras pihak ketiga (tidak boleh dimuat secara dinamik) Sebaliknya, Nginx dipilih dan disusun menjadi pemalam pihak ketiga. Ia tidak boleh dimuatkan secara dinamik. Modul ini berguna, walau bagaimanapun, ia membolehkan anda memutuskan apa yang perlu diperoleh daripada pelayan dengan memasukkan hanya fungsi yang anda mahu gunakan. Ia dianggap lebih selamat daripada pelayan Apache kerana komponen sewenang-wenangnya boleh menyambung dalam pelayan. Selain itu, NGINX menyediakan semua fungsi teras pelayan web tanpa mengorbankan ciri ringan dan berprestasi tinggi yang anda perlukan untuk berjaya. Apache adalah seperti Microsoft Word dan Nginx adalah seperti Notepad. Apache mempunyai sejuta pilihan, tetapi anda hanya memerlukan beberapa. Nginx melakukan "beberapa" perkara ini dan melakukannya 50 kali lebih pantas daripada Apache.
Pemenang: NGiNX – Ia kurang penting, tetapi ciri dan modul menjadikannya pelayan web yang lebih ringan, lebih pintar dan lebih baik daripada Apache.
Fleksibiliti ialah salah satu isu terpenting untuk pelayan web. Terdapat beberapa perbezaan menarik dalam fleksibiliti Apache vs Nginx.
Apache
menyokong menyesuaikan pelayan web melalui modul dinamik. Pelayan web boleh disesuaikan melalui modul perjalanan. Modul dinamik Apache mengambil masa paling lama untuk dimuatkan, jadi semua modul Apache menyokong ciri ini.
Nginx
tidak cukup fleksibel untuk menyokong modul dinamik dan pemuatan. Walau bagaimanapun, ini tidak berlaku dengan NGINX. Pada awal 2016, NGINX mendapat sokongan untuk pemuatan modul dinamik sebelum ini, NGINX memerlukan pentadbir untuk menyusun modul ke dalam binari NGINX. Kebanyakan modul belum lagi menyokong pemuatan dinamik, tetapi dari masa ke masa ia mungkin. Pemenang: Apache - ia jelas di hadapan pada ketika ini.
Keselamatan Apache vs Nginx sekali lagi menjadi topik perdebatan. Nah, kedua-dua pelayan web menyediakan keselamatan lanjutan yang sangat baik untuk pangkalan kod berasaskan C.
Apache
sangat selamat. Apache memastikan semua tapak web yang berjalan pada pelayannya selamat daripada sebarang bahaya dan serangan penggodam. Oleh itu, ia menyediakan petunjuk konfigurasi untuk pengendalian serangan DDoS, serta modul mod_evasive untuk bertindak balas kepada HTTP DoS, DDoS atau serangan kekerasan.
NGINX
Kod minimum untuk keselamatan yang lebih baik. Walau bagaimanapun, pangkalan kod NGINX jauh lebih kecil dengan beberapa susunan magnitud, jadi dari perspektif keselamatan yang berpandangan ke hadapan, ini pastinya merupakan kelebihan yang besar. NGINX juga menyenaraikan nasihat keselamatan terkini. Baca artikel tentang mempertahankan terhadap serangan DDoS pada blog Nginx. Pemenang: Nginx – Ia dianggap lebih selamat
Sokongan adalah yang diidamkan oleh setiap pelanggan. Ia boleh mengubah atau memecahkan pengalaman pengguna anda. Apabila membandingkan sokongan Apache dan Nginx, nampaknya tidak banyak perbezaan.
Apache
Sokongan komuniti dilakukan melalui senarai mel, IRC dan Stack Overflow. Sokongan Apache komersial tersedia daripada banyak syarikat pihak ketiga, seperti OpenLogic, tetapi Yayasan Apache tidak mengekalkan senarai rasmi. Pelayan Apache direka untuk memberikan sokongan yang kuat kepada semua penggunanya.
Nginx
Sediakan sokongan komuniti melalui senarai mel, IRC, Stack Overflow dan forum. Syarikat di sebalik NGINX menawarkan produk komersial yang dipanggil NGINX Plus, yang menyokong satu set ciri tambahan di sekitar pengimbangan beban, penstriman media dan pemantauan.
Pemenang:! Sokongan untuk kedua-duanya hampir sama. Kedua-dua pelayan web adalah hebat.
Apache mahupun nginx tidak boleh digantikan oleh yang lain, mereka mempunyai kekuatan dan kelemahan mereka. Selepas memahami faedah, had dan perbezaan, anda mungkin sudah mempunyai idea tentang pelayan web yang terbaik untuk anda.
Dalam siaran kami tentang Apache lwn. Nginx, 5 daripada 9 mata telah dimenangi oleh Nginx dan 2 mata telah "terikat" antara Apache dan nginx. Oleh itu, kita dapat melihat dengan jelas bahawa NGINX mendahului Apache.
i) Apache.
NGINX tidak menyokong fail .htaccess seperti Apache. Walau bagaimanapun, dengan Apache, anda mendapat kelebihan dengan membenarkan pengguna yang tidak mempunyai keistimewaan mengawal aspek penting tertentu tapak web mereka.
Nampaknya, pengguna tidak dibenarkan mengedit konfigurasi utama. Tetapan seluruh sistem boleh ditindih pada asas setiap direktori menggunakan fail .htaccess. Untuk prestasi terbaik, sertakan arahan .htaccess ini dalam fail konfigurasi utama. Dalam persekitaran pengehosan yang dikongsi, Apache berfungsi dengan lebih baik kerana konfigurasi .htaccessnya. P.S. Untuk pengehosan khusus atau VPS Nginx kekal sebagai pilihan terbaik.
ii) Dengan fungsi terhad = menggunakan Apache
Nginx mempunyai beberapa modul teras yang sangat penting. Walau bagaimanapun, Nginx mempunyai beberapa batasan fungsi.
Jika terdapat had tertentu atau anda perlu menggunakan modul tambahan yang Nginx tidak menyokong, anda mungkin mahu memilih Apache.
i) Pemprosesan kandungan statik yang pantas
Nginx boleh melaksanakan tugas yang lebih baik dalam memproses fail statik daripada direktori tertentu.
Selain itu, proses pelayan huluan tidak akan disekat disebabkan oleh sejumlah besar permintaan kandungan statik kerana Nginx boleh mengendalikannya secara serentak. Ini dengan ketara meningkatkan prestasi keseluruhan pelayan bahagian belakang.
Nginx sentiasa berusaha untuk memberikan pengguna pengalaman yang lebih baik. Pada 2018, ia menunjukkan pertumbuhan yang ketara. Lihatlah pengambilan utama dari 2018 di blog Nginx.
ii) Bagus untuk tapak web dengan trafik tinggi
Jika kita bercakap tentang kelajuan dan bilangan pelanggan yang boleh dilayan di bawah beban tinggi, Nginx akan sentiasa bersinar sebagai pemenang mengatasi Apache.
Ini menjadikan Nginx sangat ringan dan sesuai untuk sumber pelayan. Inilah sebabnya mengapa kebanyakan pembangun web lebih suka Nginx berbanding Apache.
Terutamanya, e-stor hari ini mengupah pembangun Magento yang tahu cara bekerja di tapak web dengan trafik tinggi dan mahir menggunakan Nginx.
Ringkasnya, apabila ia datang untuk menyediakan laman web dengan banyak trafik, Nginx tidak dapat mengalahkannya.
serentak, anda boleh menggunakannya dengan menggabungkan kelebihan setiap pelayan bersama-sama.
Anda boleh menggunakan Nginx di hadapan Apache sebagai proksi pelayan (seperti yang ditunjukkan dalam imej di bawah). Ini mengambil kesempatan daripada kelajuan pemprosesan cepat Nginx dan keupayaan untuk mewujudkan sambungan besar secara serentak.
Untuk sambungan statik, Nginx akan menyampaikan fail dengan cepat kepada pelanggan. Untuk kandungan dinamik, seperti fail Php, pelayan proksi terbalik Nginx akan memproksi permintaan mereka kepada Apache, yang kemudiannya boleh memproses keputusannya dan mengembalikan halaman yang diberikan.
Nginx kemudiannya boleh menyampaikan kandungan akhir kepada pelanggan. Selain itu, ia membolehkan anda mempunyai pelayan web yang sangat berfungsi yang melayani pelanggan anda (sebilangan besar pengguna) dengan cepat.
Atas ialah kandungan terperinci Apakah perbezaan antara Nginx dan Apache?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!