Kwanini Ninapata Nginx Bora Kuliko Apache


Kulingana na uchunguzi wa hivi punde wa seva ya wavuti na Netcraft, ambao ulifanyika mwishoni mwa 2017, (haswa mnamo Novemba), Apache na Nginx ndizo seva za wavuti zinazotumiwa sana kwenye mtandao.

Apache ni seva ya HTTP isiyolipishwa ya chanzo-wazi kwa mifumo ya uendeshaji kama Unix na Windows. Iliundwa kuwa seva salama, bora na inayoweza kupanuliwa ambayo hutoa huduma za HTTP kwa usawazishaji na viwango vilivyopo vya HTTP.

Tangu ilipozinduliwa, Apache imekuwa seva ya wavuti maarufu zaidi kwenye Mtandao tangu 1996. Ni kiwango cha ukweli kwa seva za Wavuti katika Linux na mfumo wa chanzo huria. Watumiaji wapya wa Linux kwa kawaida hupata urahisi wa kusanidi na kutumia.

Nginx (inayotamkwa 'Injini-x') ni seva ya HTTP isiyolipishwa, ya chanzo huria, yenye utendakazi wa hali ya juu, seva mbadala ya kurudi nyuma, na seva mbadala ya IMAP/POP3. Kama tu Apache, pia inaendesha mifumo ya uendeshaji kama Unix na Windows.

Inajulikana sana kwa utendaji wake wa juu, uthabiti, usanidi rahisi, na matumizi ya chini ya rasilimali, kwa miaka mingi imekuwa maarufu sana na matumizi yake kwenye Mtandao yanaelekea kwa urefu zaidi. Sasa ni seva ya wavuti ya chaguo kati ya wasimamizi wa mfumo wenye uzoefu au wasimamizi wa wavuti wa tovuti kuu.

Baadhi ya tovuti zenye shughuli nyingi zinazoendeshwa na:

  • Apache ni: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com pamoja na mengi zaidi.
  • Nginx ni: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud na wengine wengi.

Kuna rasilimali nyingi ambazo tayari zimechapishwa kwenye wavuti kuhusu ulinganisho kati ya Apache na Nginx (kwa kweli ninamaanisha nakala za 'Apache Vs Nginx'), ambazo nyingi zinaelezea kwa undani, huduma zao za juu na utendakazi chini ya hali tofauti ikijumuisha hatua za utendaji katika alama za maabara. . Kwa hivyo hilo halitashughulikiwa hapa.

Nitashiriki tu uzoefu wangu na mawazo kuhusu mjadala mzima, baada ya kujaribu Apache na Nginx, katika mazingira ya uzalishaji kulingana na mahitaji ya kukaribisha programu za kisasa za wavuti, katika sehemu inayofuata.

Sababu Kwanini Ninapata Nginx Bora Kuliko Apache

Zifuatazo ni sababu kwa nini ninapendelea seva ya wavuti ya Nginx kuliko Apache kwa uwasilishaji wa kisasa wa yaliyomo kwenye wavuti:

Nginx ni mojawapo ya seva za wavuti zenye uzani mwepesi huko nje. Ina nyayo ndogo kwenye mfumo ikilinganishwa na Apache ambayo hutumia wigo mkubwa wa utendakazi unaohitajika kuendesha programu.

Kwa sababu Nginx inaweka pamoja vipengee vichache vya msingi, inategemea seva za wavuti zilizojitolea za wahusika wengine kama vile mazingira ya nyuma ya Apache, FastCGI, Memcached, SCGI, na seva za uWSGI au seva ya programu, yaani, seva mahususi za lugha kama vile Node.js, Tomcat , na kadhalika.

Kwa hivyo utumiaji wake wa kumbukumbu unafaa zaidi kwa usambazaji mdogo wa rasilimali, kuliko Apache.

Kinyume na usanifu wa Apache ulio na nyuzi- au unaozingatia mchakato (mchakato-kwa-muunganisho au muundo wa muunganisho wa uzi), Nginx hutumia usanifu unaoweza kupanuka, unaoendeshwa na matukio (asynchronous). Inatumia muundo wa mchakato unaowajibika ambao umeundwa kulingana na rasilimali za maunzi zinazopatikana.

Ina mchakato mkuu (ambao hufanya shughuli zilizobahatika kama vile usanidi wa kusoma na kufunga kwenye bandari) na ambayo huunda michakato kadhaa ya wafanyikazi na wasaidizi.

Michakato ya mfanyakazi inaweza kila moja kushughulikia maelfu ya miunganisho ya HTTP kwa wakati mmoja, kusoma na kuandika maudhui kwenye diski, na kuwasiliana na seva za juu. Michakato ya usaidizi (kidhibiti kache na kipakiaji cha akiba) inaweza kudhibiti shughuli za kuweka akiba ya maudhui kwenye diski.

Hii hufanya shughuli zake kuwa scalable, na kusababisha utendaji wa juu. Mbinu hii ya kubuni inaifanya iwe haraka, inayofaa kwa matumizi ya kisasa. Kwa kuongezea, moduli za wahusika wengine zinaweza kutumika kupanua utendakazi asilia katika Nginx.

Nginx ina muundo rahisi wa faili ya usanidi, na kuifanya iwe rahisi sana kusanidi. Inajumuisha moduli ambazo zinadhibitiwa na maagizo yaliyoainishwa kwenye faili ya usanidi. Kwa kuongeza, maagizo yanagawanywa katika maelekezo ya kuzuia na maelekezo rahisi.

Maelekezo ya kuzuia hufafanuliwa kwa viunga ({ na }). Ikiwa maagizo ya kuzuia yanaweza kuwa na maagizo mengine ndani ya viunga, inaitwa muktadha kama vile matukio, http, seva na eneo.

http {
	server {
		
	}
}

Maagizo rahisi yanajumuisha jina na vigezo vilivyotenganishwa na nafasi na kuishia na nusu koloni (;).

http {
	server {
		location / {
				
				## this is simple directive called root
			   	root  /var/www/hmtl/example.com/;

		}
		
	}
}

Unaweza kujumuisha faili za usanidi maalum kwa kutumia maagizo ya pamoja, kwa mfano.

http {
	server {

	}
	## examples of including additional config files
	include  /path/to/config/file/*.conf;
	include  /path/to/config/file/ssl.conf;
}

Mfano mzuri kwangu ni jinsi nilivyoweza kusanidi kwa urahisi Nginx ili kuendesha tovuti nyingi zilizo na matoleo tofauti ya PHP, ambayo ilikuwa changamoto kidogo na Apache.

Mojawapo ya matumizi ya kawaida ya Nginx ni kuiweka kama seva ya wakala, katika kesi hii inapokea maombi ya HTTP kutoka kwa wateja na kuyapitisha kwa seva zilizowekwa mbadala au za juu ambazo zilitajwa hapo juu, juu ya itifaki tofauti. Unaweza pia kurekebisha vichwa vya ombi la mteja ambavyo hutumwa kwa seva mbadala, na kusanidi uakibishaji wa majibu yanayotoka kwa seva zilizotumwa.

Kisha inapokea majibu kutoka kwa seva zilizowekwa na kuwapitisha kwa wateja. Ni rahisi kusanidi kama seva mbadala ikilinganishwa na Apache kwani moduli zinazohitajika mara nyingi huwashwa kwa chaguomsingi.

Maudhui tuli au faili kwa kawaida ni faili zilizohifadhiwa kwenye diski kwenye kompyuta ya seva, kwa mfano faili za CSS, faili za JavaScripts au picha. Wacha tuzingatie hali ambapo unatumia Nginx kama sehemu ya mbele ya Nodejs (seva ya programu).

Ingawa seva ya Nodejs (haswa mifumo ya Node) imeunda vipengele vya ushughulikiaji wa faili tuli, hazihitaji kufanya usindikaji wa kina ili kutoa maudhui yasiyo ya nguvu, kwa hivyo ni manufaa kwa vitendo kusanidi seva ya wavuti ili kutumikia maudhui tuli moja kwa moja kwa. wateja.

Nginx inaweza kufanya kazi bora zaidi ya kushughulikia faili tuli kutoka kwa saraka maalum, na inaweza kuzuia maombi ya mali tuli kutokana na kusongesha michakato ya seva ya juu. Hii inaboresha kwa kiasi kikubwa utendaji wa jumla wa seva za nyuma.

Ili kutambua utendakazi wa hali ya juu na muda wa nyongeza kwa programu za kisasa za wavuti kunaweza kutaka kuendesha matukio mengi ya programu kwenye seva moja au iliyosambazwa ya HTTP. Hii inaweza pia kuhitaji kusanidi kusawazisha upakiaji ili kusambaza mzigo kati ya seva zako za HTTP.

Leo, kusawazisha upakiaji imekuwa njia inayotumika sana katika kuboresha utumiaji wa rasilimali ya mfumo wa uendeshaji, kuongeza unyumbufu, kupunguza kasi ya kusubiri, kuongeza utumaji, kufikia upungufu, na kuanzisha usanidi unaostahimili hitilafu - katika matukio mengi ya maombi.

Nginx hutumia njia zifuatazo za kusawazisha mzigo:

  • round-robin (mbinu chaguomsingi) – maombi kwa seva za mkondo wa juu husambazwa kwa mtindo wa duara (kwa mpangilio wa orodha ya seva kwenye bwawa la juu).
  • imeunganishwa angalau – hapa ombi linalofuata limetumwa kwa seva yenye idadi ndogo ya miunganisho inayotumika.
  • ip-hash – hapa kazi ya reli inatumiwa kubainisha ni seva gani inapaswa kuchaguliwa kwa ombi linalofuata (kulingana na anwani ya IP ya mteja).
  • Hashi ya jumla - chini ya njia hii, msimamizi wa mfumo anabainisha heshi (au ufunguo) na maandishi yaliyotolewa, vigezo vya ombi au muda wa utekelezaji, au mchanganyiko wao. Kwa mfano, ufunguo unaweza kuwa chanzo cha IP na mlango, au URI. Nginx kisha inasambaza mzigo kati ya seva za juu kwa kuzalisha heshi kwa ombi la sasa na kuiweka dhidi ya seva za juu.
  • Muda mdogo zaidi (Nginx Plus) - inapeana ombi linalofuata kwa seva ya juu yenye idadi ndogo ya miunganisho ya sasa lakini inapendelea seva zilizo na nyakati za chini zaidi za majibu.

Zaidi ya hayo, Nginx ina uboreshaji mkubwa na matumizi ya kisasa ya wavuti haswa mahitaji ya biashara ya teknolojia ambayo hutoa utendakazi wa hali ya juu na hatari.

Kampuni moja inayofaidika na vipengele vya kushangaza vya Nginx ni CloudFlare, imeweza kuongeza matumizi yake ya wavuti ili kushughulikia zaidi ya maoni ya ukurasa wa kila mwezi wa bilioni 15 na miundombinu ya kawaida, kulingana na Matthew Prince, mwanzilishi mwenza na Mkurugenzi Mtendaji wa CloudFare.

Kwa maelezo ya kina zaidi, angalia makala hii kwenye blogu ya Nginx: NGINX dhidi ya Apache: Mtazamo Wetu wa Swali la Muongo wa Zamani.

Wote Apache na Nginx hawawezi kubadilishwa na kila mmoja, wana pointi zao zenye nguvu na dhaifu. Hata hivyo, Nginx inatoa teknolojia yenye nguvu, inayoweza kunyumbulika, hatari na salama kwa kuwezesha tovuti za kisasa na programu za wavuti kwa uhakika na kwa ufanisi. Nini maoni yako? Tujulishe kupitia fomu ya maoni hapa chini.