Af hverju mér finnst Nginx nánast betra en Apache


Samkvæmt nýjustu vefþjónakönnun Netcraft, sem gerð var undir lok árs 2017, (nákvæmlega í nóvember), eru Apache og Nginx mest notaðir opna netþjónarnir á netinu.

Apache er ókeypis, opinn HTTP netþjónn fyrir Unix-lík stýrikerfi og Windows. Hann var hannaður til að vera öruggur, skilvirkur og stækkanlegur þjónn sem veitir HTTP þjónustu í takt við ríkjandi HTTP staðla.

Allt frá því að það kom á markað hefur Apache verið vinsælasti vefþjónninn á internetinu síðan 1996. Hann er raunverulegur staðall fyrir vefþjóna í Linux og opnu vistkerfi. Nýir Linux notendur eiga venjulega auðveldara með að setja upp og nota.

Nginx (borið fram „Engine-x“) er ókeypis, opinn uppspretta, afkastamikill HTTP netþjónn, öfugur umboðsþjónn og IMAP/POP3 umboðsþjónn. Rétt eins og Apache, keyrir það einnig á Unix-líkum stýrikerfum og Windows.

Vel þekkt fyrir mikla afköst, stöðugleika, einfalda uppsetningu og litla auðlindanotkun, hefur það í gegnum árin orðið svo vinsælt og notkun þess á internetinu stefnir í meiri hæðir. Hann er nú valinn vefþjónn meðal reyndra kerfisstjóra eða vefstjóra efstu vefsvæða.

Sumar af annasömu síðunum knúnar af:

  • Apache eru: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com auk margt fleira.
  • Nginx eru: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud og margir aðrir.

Það eru fjölmargar heimildir þegar birtar á vefnum varðandi samanburð á Apache og Nginx (ég meina í raun 'Apache Vs Nginx' greinar), sem margar hverjar útskýra greinilega í smáatriðum, helstu eiginleika þeirra og aðgerðir við ýmsar aðstæður, þar á meðal árangursmælingar í viðmiðum á rannsóknarstofu . Því verður ekki fjallað um það hér.

Ég mun einfaldlega deila reynslu minni og hugsunum um alla umræðuna, eftir að hafa prófað Apache og Nginx, bæði í framleiðsluumhverfi byggt á kröfum um hýsingu nútíma vefforrita, í næsta kafla.

Ástæður fyrir því að mér finnst Nginx nánast betra en Apache

Eftirfarandi eru ástæður fyrir því að ég kýs Nginx vefþjón fram yfir Apache fyrir nútíma afhendingu vefefnis:

Nginx er einn af léttum netþjónum sem eru til staðar. Það hefur lítil fótspor á kerfi samanborið við Apache sem útfærir mikið umfang virkni sem nauðsynleg er til að keyra forrit.

Vegna þess að Nginx setur saman handfylli af kjarnaeiginleikum, treystir það á sérstaka þriðja aðila andstreymis netþjóna eins og Apache bakenda, FastCGI, Memcached, SCGI og uWSGI netþjóna eða forritaþjóna, þ.e. , o.s.frv.

Þess vegna hentar minnisnotkun þess mun betur fyrir takmarkaða auðlindadreifingu en Apache.

Öfugt við þráð- eða ferlimiðaðan arkitektúr Apache (ferli-á-tengingu eða þráð-á-tengingu líkan), notar Nginx skalanlegt, atburðadrifinn (ósamstilltur) arkitektúr. Það notar ábyrgt ferlilíkan sem er sniðið að tiltækum vélbúnaðarauðlindum.

Það hefur aðalferli (sem framkvæmir forréttindaaðgerðir eins og að lesa stillingar og bindingu við höfn) og sem býr til nokkra starfsmanns- og hjálparferla.

Starfsmannaferlarnir geta hvor um sig séð um þúsundir HTTP tenginga samtímis, lesið og skrifað efni á diskinn og átt samskipti við andstreymisþjóna. Hjálparferlar (skyndiminnisstjóri og skyndiminnihleðslutæki) geta stjórnað skyndiminni á diski.

Þetta gerir rekstur þess skalanlegur og leiðir til mikils árangurs. Þessi hönnunaraðferð gerir það enn frekar hratt, hagstætt fyrir nútíma forrit. Að auki er hægt að nota einingar frá þriðja aðila til að auka innbyggða virkni í Nginx.

Nginx er með einfalda uppbyggingarskrá, sem gerir það mjög auðvelt að stilla. Það samanstendur af einingum sem er stjórnað af tilskipunum sem tilgreindar eru í stillingarskránni. Auk þess er tilskipunum skipt í blokktilskipanir og einfaldar tilskipanir.

Blokktilskipun er skilgreind með svigrúmum ({ og }). Ef blokkatilskipun getur haft aðrar tilskipanir inni í axlaböndum er það kallað samhengi eins og atburðir, http, þjónn og staðsetning.

http {
	server {
		
	}
}

Einföld tilskipun samanstendur af nafni og færibreytum aðskilin með bilum og endar með semíkommu (;).

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

		}
		
	}
}

Þú getur látið sérsniðnar stillingarskrár fylgja með því að nota include tilskipunina, til dæmis.

http {
	server {

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

Hagnýtt dæmi fyrir mig var hvernig mér tókst að stilla Nginx auðveldlega til að keyra margar vefsíður með mismunandi PHP útgáfum, sem var smá áskorun með Apache.

Ein algengasta notkun Nginx er að setja hann upp sem proxy-þjón, í þessu tilviki tekur hann við HTTP-beiðnum frá viðskiptavinum og sendir þær til proxy- eða andstreymisþjóna sem nefndir voru hér að ofan, yfir mismunandi samskiptareglur. Þú getur líka breytt hausum biðlarabeiðna sem eru sendir á proxy-þjóninn og stillt biðminni á svörum sem koma frá proxy-þjónum.

Síðan fær það svör frá umboðsþjónum og sendir þau til viðskiptavina. Það er miklu auðveldara að stilla það sem proxy-þjón samanborið við Apache þar sem nauðsynlegar einingar eru í flestum tilfellum virkar sjálfgefið.

Stöðugt efni eða skrár eru venjulega skrár sem eru geymdar á diski á netþjónstölvunni, til dæmis CSS skrár, JavaScript skrár eða myndir. Við skulum íhuga atburðarás þar sem þú notar Nginx sem framenda fyrir Nodejs (forritaþjónninn).

Þó að Nodejs þjónninn (sérstaklega hnútarammar) hafi innbyggða eiginleika til að meðhöndla kyrrstöðu skrár, þurfa þeir ekki að gera mikla vinnslu til að skila efni sem er ekki kraftmikið, þess vegna er nánast hagkvæmt að stilla vefþjóninn til að þjóna kyrrstætt efni beint til viðskiptavinum.

Nginx getur framkvæmt miklu betri vinnu við að meðhöndla truflanir skrár úr tiltekinni skrá og getur komið í veg fyrir að beiðnir um kyrrstæðar eignir kæfi andstreymis miðlaraferli. Þetta bætir verulega heildarafköst bakenda netþjóna.

Til að gera sér grein fyrir miklum afköstum og spenntur fyrir nútíma vefforrit gæti þurft að keyra mörg forritatilvik á einum eða dreifðum HTTP netþjónum. Þetta gæti aftur á móti þurft að setja upp álagsjafnvægi til að dreifa álagi á milli HTTP netþjónanna þinna.

Í dag er álagsjöfnun orðin mikið notuð nálgun til að hámarka nýtingu stýrikerfisauðlinda, hámarka sveigjanleika, skera niður leynd, auka afköst, ná fram offramboði og koma á bilunarþolnum stillingum - í mörgum forritatilvikum.

Nginx notar eftirfarandi álagsjöfnunaraðferðir:

  • round-robin (sjálfgefin aðferð) – beiðnum til andstreymisþjóna er dreift á hringlaga hátt (í röð eftir lista yfir netþjóna í andstreymishópnum).
  • minnst tengdur – hér er næsta beiðni sett á netþjóninn með minnst fjölda virkra tenginga.
  • ip-hash – hér er kjötkássafall notað til að ákvarða hvaða netþjón á að velja fyrir næstu beiðni (byggt á IP tölu viðskiptavinar).
  • Almennt kjötkássa – samkvæmt þessari aðferð tilgreinir kerfisstjórinn kjötkássa (eða lykil) með tilteknum texta, breytum beiðninnar eða keyrslutíma, eða samsetningu þeirra. Til dæmis getur lykillinn verið uppruna IP og gátt, eða URI. Nginx dreifir síðan álaginu á andstreymisþjónana með því að búa til kjötkássa fyrir núverandi beiðni og setja það á móti andstreymisþjónunum.
  • Lásti tími (Nginx Plus) – úthlutar næstu beiðni til andstreymisþjónsins með sem minnst fjölda núverandi tenginga en hyggur á netþjóna með lægsta meðalviðbragðstíma.

Ennfremur, Nginx er mjög stigstærð og nútíma vefforrit, sérstaklega fyrirtækisforrit krefjast tækni sem veitir mikla afköst og sveigjanleika.

Eitt fyrirtæki sem nýtur góðs af ótrúlegum sveigjanleikaeiginleikum Nginx er CloudFlare, það hefur tekist að stækka vefforrit sín til að takast á við meira en 15 milljarða mánaðarlega síðuflettingu með tiltölulega hóflegum innviðum, að sögn Matthew Prince, meðstofnanda og forstjóra CloudFare.

Fyrir ítarlegri útskýringu, skoðaðu þessa grein á Nginx blogginu: NGINX vs Apache: Our View of a Decade-Old Question.

Bæði Apache og Nginx er ekki hægt að skipta út fyrir hvort annað, þeir hafa sína sterku og veiku hlið. Hins vegar býður Nginx upp á öfluga, sveigjanlega, stigstærða og örugga tækni til að knýja nútíma vefsíður og vefforrit á áreiðanlegan og skilvirkan hátt. Hver er þín skoðun? Láttu okkur vita í gegnum athugasemdaformið hér að neðan.