![Atari VCS išankstinis užsakymas, specifikacijos, kaina ir informacija](/f/10c48d8b0ea0e1419bbe0e01689a10df.gif?width=100&height=100)
Pagal naujausią „Netcraft“ atlikta žiniatinklio serverio apklausa, kuris buvo atliktas 2017 m. pabaigoje (būtent lapkritį), „Apache“ ir „Nginx“ yra plačiausiai naudojami atvirojo kodo žiniatinklio serveriai internete.
Apache yra nemokamas, atviro kodo HTTP serveris, skirtas „Unix“ tipo operacinėms sistemoms ir „Windows“. Jis buvo sukurtas kaip saugus, efektyvus ir išplėstas serveris, kuris teikia HTTP paslaugas sinchroniškai su vyraujančiais HTTP standartais.
Nuo pat jo paleidimo, Apache buvo populiariausias žiniatinklio serveris internete nuo 1996 m. Tai de facto „Linux“ ir atvirojo kodo ekosistemos žiniatinklio serverių standartas. Naujiems „Linux“ vartotojams paprastai lengviau nustatyti ir naudoti.
Nginx (tariama „Variklis-x“) Yra nemokamas, atviro kodo, didelio našumo HTTP serveris, atvirkštinis tarpinis serveris ir IMAP/POP3 tarpinis serveris. Kaip ir „Apache“, jis taip pat veikia „Unix“ tipo operacinėse sistemose ir „Windows“.
Gerai žinomas dėl didelio našumo, stabilumo, paprastos konfigūracijos ir mažo išteklių suvartojimo, bėgant metams jis tapo toks populiarus, o jo naudojimas internete siekia didesnių aukštumų. Dabar tai yra žiniatinklio serveris, kurį pasirenka patyrę sistemos administratoriai arba geriausių svetainių žiniatinklio valdytojai.
Kai kurios judrios svetainės yra maitinamos:
Internete jau paskelbta daug išteklių, susijusių su jų palyginimu Apache ir Nginx (aš tikrai turiu omenyje "„Apache“ prieš „Nginx““Straipsniai), iš kurių daugelis aiškiai ir išsamiai paaiškina jų pagrindines savybes ir operacijas pagal įvairius scenarijus, įskaitant našumo matavimus laboratorijų etalonuose. Todėl čia apie tai nebus kalbama.
Aš tiesiog pasidalinsiu savo patirtimi ir mintimis apie visas diskusijas, išbandęs Apache ir Nginx, tiek gamybinėje aplinkoje, pagrįstoje šiuolaikinių žiniatinklio programų prieglobos reikalavimais, kitame skyriuje.
Toliau pateikiamos priežastys, kodėl man labiau patinka „Nginx“ žiniatinklio serveris, o ne „Apache“ šiuolaikiniam žiniatinklio turinio pristatymui:
Nginx yra vienas iš lengvųjų žiniatinklio serverių. Ji turi nedidelį pėdsaką sistemoje, palyginti su „Apache“, kuri įgyvendina daugybę funkcijų, būtinų programai paleisti.
Kadangi „Nginx“ sujungia keletą pagrindinių funkcijų, ji remiasi specialiais trečiųjų šalių žiniatinklio serveriais, tokiais kaip „Apache“ užpakalinė dalis, „FastCGI“, „Memcached“, SCGI ir „uWSGI“ serveriai arba programų serveris, t. y. konkrečios kalbos serveriai, tokie kaip „Node.js“, „Tomcat“, ir kt.
Todėl jo atminties naudojimas yra daug geriau pritaikytas ribotam išteklių diegimui Apache.
Priešingai nei „Apache“ srieginė ar į procesą orientuota architektūra (procesas už ryšį arba sriegis už ryšį), Nginx naudoja keičiamo dydžio, įvykiu pagrįstą (asinchroninę) architektūrą. Jame naudojamas atsakingo proceso modelis, pritaikytas prie turimų aparatūros išteklių.
Jis turi pagrindinį procesą (kuris atlieka privilegijuotas operacijas, pvz., Nuskaito konfigūraciją ir susieja prie prievadų) ir sukuria keletą darbuotojų ir pagalbinių procesų.
Darbuotojų procesai gali vienu metu valdyti tūkstančius HTTP ryšių, skaityti ir rašyti turinį į diską ir bendrauti su ankstesniais serveriais. Pagalbiniai procesai (talpyklos tvarkyklė ir talpyklos įkėlėjas) gali valdyti disko turinio talpyklos operacijas.
Dėl to jos operacijos yra keičiamos ir pasiekiamas didelis našumas. Šis dizaino metodas taip pat daro jį greitu ir palankiu šiuolaikinėms reikmėms. Be to, trečiųjų šalių moduliai gali būti naudojami išplėsti „Nginx“ savąsias funkcijas.
Nginx turi paprastą konfigūracijos failo struktūrą, todėl ją labai lengva sukonfigūruoti. Jį sudaro moduliai, valdomi konfigūracijos faile nurodytomis direktyvomis. Be to, direktyvos skirstomos į grupines ir paprastas direktyvas.
Bloko direktyva apibrėžiama skliausteliais ({
ir }
). Jei blokavimo direktyvoje skliausteliuose gali būti kitų direktyvų, ji vadinama kontekstu, pvz., Įvykiais, http, serveriu ir vieta.
http {serveris {} }
Paprastą direktyvą sudaro pavadinimas ir parametrai, atskirti tarpais ir baigiasi kabliataškiu (;)
.
http {serveris {location/{## tai paprasta direktyva, vadinama root root /var/www/hmtl/example.com/; } } }
Galite įtraukti pasirinktinius konfigūracijos failus, pavyzdžiui, naudodami įtraukimo direktyvą.
http {serveris {} ## papildomų konfigūracijos failų įtraukimo pavyzdžiai: /path/to/config/file/*.conf; įtraukti /path/to/config/file/ssl.conf; }
Praktinis pavyzdys man buvo tai, kaip man pavyko lengvai sukonfigūruoti „Nginx“ paleisti kelias svetaines su skirtingomis PHP versijomis, kuris buvo nedidelis iššūkis su „Apache“.
Vienas iš bendrų naudojimo būdų Nginx nustato jį kaip tarpinį serverį, šiuo atveju jis gauna HTTP užklausas iš klientų ir perduoda jas į tarpinius arba prieš tai esančius serverius, kurie buvo paminėti aukščiau, naudojant skirtingus protokolus. Taip pat galite modifikuoti kliento užklausų antraštes, kurios siunčiamos į tarpinį serverį, ir sukonfigūruoti iš tarpinių serverių gaunamų atsakymų buferį.
Tada jis gauna atsakymus iš tarpinių serverių ir perduoda juos klientams. Tai lengviau konfigūruoti kaip tarpinį serverį, palyginti su „Apache“, nes reikalingi moduliai daugeliu atvejų yra įjungti pagal numatytuosius nustatymus.
Statinis turinys arba failai paprastai yra failai, saugomi serverio kompiuterio diske, pavyzdžiui, CSS failai, „JavaScripts“ failai ar vaizdai. Apsvarstykime scenarijų, kai „Nginx“ naudojate kaip „Nodejs“ (programų serverio) sąsają.
Nors „Nodejs“ serveris (ypač „Node“ karkasai) turi statinio failų tvarkymo funkcijas, jiems nereikia intensyviai dirbti apdoroti, kad būtų pateiktas ne dinaminis turinys, todėl praktiškai naudinga konfigūruoti žiniatinklio serverį, kad jis tiesiogiai teiktų statinį turinį klientų.
Nginx gali daug geriau tvarkyti statinius failus iš konkretaus katalogo ir neleisti statinio turto užklausoms užgniaužti ankstesnių serverių procesų. Tai žymiai pagerina bendrą vidinių serverių našumą.
Norint pasiekti aukštą šiuolaikinių žiniatinklio programų našumą ir veikimo laiką, gali reikėti paleisti kelis programų egzempliorius viename arba paskirstytame HTTP serveryje. Dėl to gali prireikti nustatyti apkrovos balansavimą, kad apkrova būtų paskirstyta tarp jūsų HTTP serverių.
Šiandien apkrovos balansavimas tapo plačiai paplitusiu metodu optimizuoti operacinės sistemos išteklių naudojimą, maksimaliai padidinti lankstumą ir sumažinti sumažinti vėlavimą, padidinti našumą, pasiekti perteklių ir nustatyti gedimams atsparias konfigūracijas-keliose programose atvejų.
„Nginx“ naudoja šiuos apkrovos balansavimo metodus:
Be to, Nginx yra labai keičiamo dydžio ir modernios žiniatinklio programos, ypač įmonių programoms, reikalaujančioms technologijos, užtikrinančios aukštą našumą ir mastelį.
Viena bendrovė, kuri naudojasi nuostabiomis „Nginx“ mastelio keitimo funkcijomis, yra ta „CloudFlare“, ji sugebėjo išplėsti savo žiniatinklio programas, kad galėtų apdoroti daugiau nei 15 milijardų mėnesio puslapių peržiūrų ir palyginti kuklią infrastruktūrą Matthew Prince, įkūrėjas ir generalinis direktorius „CloudFare“.
Norėdami gauti išsamesnį paaiškinimą, peržiūrėkite šį straipsnį „Nginx“ tinklaraštyje: NGINX vs. Apache: mūsų požiūris į dešimtmečio senumo klausimą.
Abu Apache ir Nginx negali būti pakeisti vienas kitu, jie turi savo stipriąsias ir silpnąsias puses. Tačiau, Nginx siūlo galingą, lanksčią, keičiamo dydžio ir saugią technologiją, skirtą patikimai ir efektyviai maitinti šiuolaikines svetaines ir žiniatinklio programas. Koks tavo požiūris? Praneškite mums naudodami toliau pateiktą atsiliepimų formą.