Nginx vs Apache: Perbandingan Head to Head & Cara Memilih

Kemas kini: 2022-07-15 / Artikel oleh: Timothy Shim

Kedua-dua Nginx dan Apache are mature products with rich feature sets and high performance. They share common open-source origins, and you can deploy them either on Windows or Linux pelayan. 

Walau bagaimanapun, beberapa perbezaan utama mungkin membuatkan anda memilih satu daripada yang lain.

Contohnya, 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 yang mana pelayan web mungkin lebih sesuai dengan keperluan anda, mari selami lebih mendalam pilihan ini.

Apache – Pelayan Web Wira Asal

Apache

Dicipta pada tahun 1995 oleh Robert McCool dan pada asalnya dipanggil "Projek Pelayan HTTP Apache" (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 telah lama berjalan ini, saya menganggap Apache sebagai pelayan web "wira asal". Ia teguh, didokumentasikan dengan baik dan disokong oleh komuniti pembangun terbuka di bawah naungan Yayasan Perisian Apache.

Nginx - Titan Era Baru

Nginx

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 yang Apache bergelut untuk menguruskan. 

Baca juga

Perbezaan ketara Antara Nginx & Apache

Seni bina

Nginx dan Apache berkongsi beberapa persamaan dalam seni bina teras mereka. Contohnya, 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.

Seni bina didorong proses Apache 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. 

Pengendalian PHP

Kerana kedua-dua pelayan web ini berfungsi terutamanya PHP, cara mereka mengendalikan kod bermakna potensi prestasi yang ketara. Nginx tidak melaksanakan 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 respons 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 yang dapat diuruskan oleh Apache.

Apache menggunakan modul yang dipanggil mod_php untuk melaksanakan kod PHP. Dalam model ini, setiap kali permintaan HTTP masuk, Apache menghasilkan proses atau utas baharu (bergantung pada cara ia dikonfigurasikan) untuk mengendalikan permintaan tersebut. Proses ini juga bertanggungjawab untuk mengendalikan sebarang permintaan PHP dalam permintaan tersebut.

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 permintaan PHP dalam permintaan adalah lebih intensif kerana sistem pengendalian perlu melahirkan jurubahasa baharu untuk setiap satu.

Cara Memilih Antara Nginx dan 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: 

  • Anda menjalankan tapak web berskala sederhana/besar yang mungkin berkembang dengan ketara dari semasa ke semasa dan memerlukan modul tersuai.
  • Anda mempunyai banyak hos atau modul maya yang didayakan dalam pelayan anda dan memerlukan semuanya pada permulaan.
  • Anda menjalankan tapak web kecil dan tidak mahu menghabiskan masa mempelajari cara mengkonfigurasi Nginx dengan betul.

Gunakan Nginx jika:

  • Anda menjalankan tapak web berskala besar dan ingin mengkonfigurasi cache & pengimbangan beban dengan mudah pada masa yang sama tanpa perlu risau tentang had perkakasan.

Pemikiran Akhir tentang Nginx vs Apache

Sama ada anda menjalankan Apache atau Nginx bergantung pada keperluan anda dan perkakasan yang anda jalankan. Anda boleh menggunakan mana-mana pilihan untuk menyediakan laman web PHP. 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.

Baca juga

Mengenai Timothy Shim

Timothy Shim adalah seorang penulis, editor, dan pakar teknologi. Memulakan kerjayanya di bidang Teknologi Maklumat, dia dengan cepat mencetak cetaknya dan sejak itu bekerja dengan tajuk media Antarabangsa, serantau dan domestik termasuk ComputerWorld, PC.com, Business Today, dan The Asian Banker. Kepakarannya terletak di bidang teknologi dari sudut pandang pengguna dan perusahaan.