Apa kekurangan Nginx yang dimiliki Apache?

11

Nginx dikatakan jauh lebih hemat sumber daya dan lebih mudah dikonfigurasi daripada Apache. Seorang teman mengatakan kepada saya bahwa "itu tidak dapat melakukan beberapa hal yang dapat dilakukan Apache, tetapi saya tidak memerlukan hal-hal itu."

Namun, saya masih penasaran: hal-hal apa yang dapat dilakukan Apache yang tidak bisa dilakukan Nginx? Saya tidak perlu daftar lengkap, hanya gambaran umum skenario di mana Apache akan menjadi pilihan yang lebih baik.

Nathan Long
sumber

Jawaban:

9

Saya pikir bagian terbesar yang masih hilang dari Nginx adalah dukungan WebDAV penuh. Hampir setiap aspek lainnya dicakup oleh modul inti atau pihak ketiga.

Nginx tidak mendukung hal-hal seperti mod_php oleh desain, jadi saya tidak yakin Anda dapat mengatakan bahwa Nginx kehilangan bagian-bagian ini. Ini lebih seperti Nginx memberitahumu dengan agak tegas bahwa menggunakan ini bodoh.

Martin Fjordvald
sumber
+1 Sementara saya tidak setuju bahwa setiap kemungkinan penggunaan mod_php dan hal-hal seperti itu "bodoh", saya setuju dengan yang lain.
Chris S
Apakah ini komentar pembenci php atau ada sesuatu yang benar-benar buruk tentang mod_php? Tautan? Saya bertanya karena hampir semua yang saya miliki menggunakan mod_php .. dan tolong, saya tidak peduli apa yang Anda pikir lebih baik, saya hanya ingin tahu apa yang salah dengan mod_php
Safado
3
mod_php tidak ada hubungannya dengan PHP itu sendiri. Ini ada hubungannya dengan bagaimana PHP berinteraksi dengan Apache. Masalahnya adalah bahwa ketika Anda menanamkan PHP di dalam Apache maka proses yang menangani PHP dan proses yang menangani file gambar 2kb adalah proses yang sama persis. Jika klien akhir lambat maka proses Anda yang sangat mahal dapat melayani gambar kecil selama 2 detik, yang mana waktu tidak dapat dihabiskan untuk PHP.
Martin Fjordvald
+1 "Ini lebih seperti Nginx memberi tahu Anda dengan paksa bahwa menggunakan ini bodoh."
4

Apache memiliki sejumlah besar modul yang tersedia yang memungkinkan untuk beberapa skenario penempatan yang tidak mungkin dilakukan dengan Nginx.

Salah satu contoh adalah mod_dav_svnuntuk hosting Subversion melalui HTTP. Ini hanya tersedia untuk Apache. Contoh penting lainnya adalah hal-hal seperti mod_perlatau mod_php. Sementara kebanyakan pengaturan tradisional juga dapat dilakukan melalui FCGI (atau WSGI, atau penumpang), memiliki juru bahasa yang sebenarnya dalam proses dapat bermanfaat jika Anda perlu misalnya mengimplementasikan skema otentikasi khusus di dalam server web (seperti itu dilakukan untuk hosting git atau svn dengan Redmine / ChiliProject).

Secara umum, teman Anda benar: skenario penempatan yang paling umum juga dapat diselesaikan dengan nginx, tetapi Apache masih lebih fleksibel jika Anda harus membuat beberapa hal yang lebih "spesial".

Holger Just
sumber
3

Versi pendek dari ceritanya adalah bahwa Apache memiliki banyak plugin dan komunitas yang dibangun di sekitarnya. Nginx, hanya ada untuk waktu yang relatif singkat, sehingga belum memiliki basis kode komunitas.

Ketika orang bertanya kepada saya apa perbedaannya, Nginx adalah pisau steak, itu baik untuk berbagai keperluan dan melakukan beberapa hal dengan sangat baik. Apache adalah Pisau Tentara Swiss, ia memiliki banyak fitur berbeda dan melakukan semuanya dengan cukup baik.

Chris S
sumber
Saya pikir Anda mungkin sedikit ketinggalan zaman tentang apa yang dapat dilakukan Nginx, di beberapa daerah itu jauh lebih fleksibel daripada Apache. Pendek HTTP / 1.1 proxy dan WebDAV Saya tidak bisa memikirkan banyak hal yang hilang.
Martin Fjordvald
@ MartinFjordvald Ada beberapa fungsi yang sengaja dipilih Nginx untuk tidak dilakukan, Anda tidak bisa mengatakan mereka "hilang", tetapi Anda tidak dapat mengklaim bahwa Nginx dapat melakukan semua yang dapat dilakukan oleh Apache. Ini adalah tradeoff dan saya memuji Nginx untuk pilihan yang telah mereka buat.
Chris S
Yah karena komentar asli saya HTTP / 1.1 proxy sekarang didukung jadi kami ke webdav dan svn hosting tidak didukung. Itu jika kita tidak mempertimbangkan masalah seperti modul yang terhubung secara dinamis, yang memang benar bahwa nginx telah memutuskan untuk tidak melakukannya sejauh ini.
Martin Fjordvald
1

Banyak modul dan pangkalan yang terpasang ginourmous, sebagai permulaan. Tapi itu bukan apa yang dimiliki Apache yang harus Anda perhatikan, apa yang dilakukan Apache : ia berfungsi lebih baik untuk menyajikan konten dinamis seperti PHP, Python, Perl, Java, dll.

Tentu saja Anda dapat melakukannya dengan Nginx juga (tapi itu sedikit hackish IMHO), tetapi solusinya jauh lebih terbukti dan matang berjalan di Apache daripada di NginX, yang pada gilirannya jauh lebih baik daripada Apache dalam melayani beban tinggi dan hebat rewriter / reverse proxy.

Untuk setiap pekerjaan, alat yang tepat!

coredump
sumber
Mungkin ini benar sebelum 2008 ketika saya pertama kali menggunakan nginx di server web produksi, tapi sepertinya tidak sekarang. Saya ingin melihat perluasan mengapa Anda percaya model Apache termasuk penerjemah di server web lebih baik.
Michael Hampton