Mida Nginx tähendab 1. Nginxi funktsionaalne ulatus. Konfiguratsiooni ja käivitatava koodi värskendamine

Rohkem kui 50% kogu maailmas toimuvast liiklusest teenindab Apache ja Nginxi tehnoloogia– avatud veebiserverid allikas. Nginx täidab kasutajaliidese funktsiooni, Apache aga taustafunktsiooni. Nginx on esimene, kes võtab vastu kasutajate päringuid ja vastab neile vajaliku sisuga – piltide, failide, skriptidega. Heavy Apache omakorda sellega ei tegele, vaid töötleb dünaamikat. Nginxi puhverserveri taotlused ja vastused. See kombinatsioon sobib suurepäraselt suurtele saitidele, mida külastavad paljud kasutajad. Väikeste saitide jaoks see kamp ei tõsta tootlikkust. Apache ja Nginx vähendavad üldiselt serveri koormust seetõttu, et Nginx tegeleb staatilise sisuga, Apache aga dünaamilise sisuga.

Apache ja Nginxi ei tohiks pidada vahetatavateks tehnoloogiateks, kuigi neil on palju sarnaseid funktsioone. Igal veebiserveril on oma eelised ja selle kasutamine oleneb konkreetsest ülesandest. Selles artiklis Vaatame iga tehnoloogiat olenevalt rakendusalast. Artikkel on kasulik virtuaalsete ja spetsiaalsete füüsiliste serverite omanikele.

Funktsionaalne ja kiire Nginx ilmus 2004. aastal ja pärast seda väljalaset hakkas see populaarsust koguma. Tänu oma kergele kaalule ja mastaapsusele töötab see hästi mis tahes riistvaraga. Nginxi kasutatakse kahel viisil: veebiserverina või puhverserverina.

Mida Nginx veebiserverina teeb?

  • loob automaatselt vahemälu deskriptoreid ja faililoendeid, teenindab registrifaile ja staatilisi päringuid;
  • kiirendab tõrketaluvust, puhverserverit ja koormuse tasakaalustamist;
  • vahemällu FastCGI-ga ja kiirendab puhverserveri kasutamist;
  • toetab SSL-i;
  • toetab Perli;
  • on filtrid ja modulaarsus;
  • autentib HTTP ja filtreerib SSL-i.

Nginxi puhverserverina:

  • StartTLS-i ja SSL-i täielik pakkumine;
  • autentimise lihtsus (USER/PASS, LOGIN);
  • kasutab POP3/IMAP-taustaprogrammi ümbersuunamiseks välist HTTP-serverit.

Nagu näete, täidab Nginx paljusid funktsioone ilma süsteemi üle koormamata. Ametlikel andmetel kasutab seda tehnoloogiat enam kui 56 miljonit saiti üle maailma (näiteks Rambler, Yandex, Mail, Begun, WordPress.com, vk.com, Facebook, Rutracker.org), kuid Nginx jääb alla. Apache populaarsuselt. Miks on Apache nii populaarne?

Apache veebiserver - platvormideülene tarkvara, mis loodi 1995. aastal. Tänu ulatuslikule dokumentatsioonile ja heale integratsioonile kolmanda osapoole tarkvaraga on Apache saavutanud tohutu populaarsuse. Toetab järgmisi opsüsteeme - Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS. .

Apache veebiserveri eelised:

  • toetus programmeerimiskeeled PHP, Python, Ruby, Perl, ASP, Tcl;
  • väliste moodulite ühendamise lihtsus;
  • tehnoloogiline tugi CGI ja FastCGI;
  • mehhanismide olemasolu, mis tagavad andmetele juurdepääsu turvalisuse ja diferentseerimise;
  • võimalus kasutada kasutaja autentimiseks DBMS-i;
  • paindlik ja usaldusväärne süsteemi konfiguratsioon;
  • sobib rakendusteks, mis nõuavad võimas krüptograafiline kaitse andmeid;
  • loomise võimalus kasutajate kataloogid veebisaidi jaoks;
  • võime konfigureerida virtuaalseid hoste, mille abil ühel füüsiline server saate luua mitu virtuaalset;
  • peab logisid teie serveris toimuva kohta;
  • aktiivne Tagasiside arendajatega ja tarkvaravigade õigeaegne lahendamine.

Kuid hoolimata kõigist eelistest Apache veebiserver mõnevõrra keeruline seadistada ja kasutada, nii et mitte iga algaja ei saa sellega hakkama. Aga kui teie projekt vajab seda konkreetset tarkvara, siis teete seda ka õige valik Apache kasuks.

Kas soovite kindlustada PHP töö serveris? Täpsemalt selle kohta.

Pärast Apache ja Nginxi plusside ja miinuste tundmist saate valida kasulikke lahendusi teie veebisaidi jaoks, olenevalt teie eesmärkidest. Aga võib-olla vajate Apache + Nginxi kombinatsiooni saavutuse eest parim tulemus. Näiteks Nginxi kasutatakse sageli enne Apache'i pöördpuhverserverina. See kombinatsioon võimaldab teil käsitleda paljusid konkureerivaid taotlusi ja sorteerib need. Need päringud, millega Nginx hakkama ei saa, saadetakse Apache'ile, vähendades sellega viimase koormust. Sel juhul suureneb veataluvus. Enne veebiserveri valimist peate läbi viima iga lahenduse jõudluse ja võimaluste kohustuslikud testid.

Kõigi HyperHosti hostimise toetatud tehnoloogiate kohta lisateabe saamiseks külastage veebisaiti.

See artikkel sisaldas üldist teavet veebilinkimise võimaluste kohta Apache serverid ja Nginx. Rohkem rohkem informatsiooni V .

Kui vajate meie abi, võtke meiega ühendust!

Vastame hea meelega kõigile teie küsimustele veebiserverite seadistamise kohta. Meilt saab alati ka tasuta asjaajamise. Kas kõik tehniline abi hostid on samad? Tasuta ja tasulise halduse funktsioonide kohta spetsiaalses.

17248 korda 9 Täna vaadatud korda

  • Tõlge

NGINX on jõudluse osas teenitult üks parimaid servereid ja kõik see on tänu sellele sisemine struktuur. Kui paljud veebi- ja rakendusserverid kasutavad lihtsat mitme lõimega mudelit, siis NGINX eristub teistest oma mittetriviaalse sündmusepõhise arhitektuuriga, mis võimaldab seda hõlpsalt skaleerida sadade tuhandete samaaegsete ühendusteni.


NGINX-i olekumasin on sisuliselt päringu töötlemise juhiste kogum. Enamik veebiservereid täidab sama funktsiooni, kuid erinevus seisneb teostuses.

Riigi masina seade

Lõpliku oleku masinat võib pidada malemängu reegliteks. Iga HTTP-tehing on malemäng. Ühel pool malelauda on veebiserver suurmeister, kes teeb otsuseid väga kiiresti. Teisel pool on kaugklient, brauser, mis taotleb saiti või rakendust suhteliselt aeglase võrgu kaudu.

Mängureeglid võivad aga olla väga keerulised. Näiteks võib veebiserveril olla vaja suhelda muude ressurssidega (puhverserveri päringud taustaprogrammile) või võtta ühendust autentimisserveriga. Kolmandate osapoolte moodulid võivad töötlemist veelgi keerulisemaks muuta.

Blokeeriv olekumasin

Tuletage meelde meie protsessi või lõime määratlust kui iseseisvat käskude kogumit, mille operatsioonisüsteem saab määrata täitmise konkreetsele protsessori tuumale. Enamik veebiservereid ja veebirakendusi kasutab mudelit, kus nad mängivad malet ühe protsessi või lõimega ühenduse kohta. Iga protsess või lõim sisaldab juhiseid ühe mängu lõpuni mängimiseks. Kogu selle aja veedab serveris töötav protsess suurema osa ajast blokeerituna, oodates kliendi järgmist käiku.

  1. Veebiserveri protsess ootab kuulamispesadel uusi ühendusi (klientide algatatud uusi pakette).
  2. Pärast uue ühenduse saamist mängib ta mängu, blokeerides pärast iga liigutust, oodates kliendilt vastust.
  3. Kui mängu mängitakse, võib veebiserveri protsess oodata, kuni klient alustab järgmist mängu (see vastab pikaealistele sideühendustele). Kui ühendus on suletud (klient on lahkunud või aegunud), naaseb protsess uute klientidega kohtumiseks kuulamispesades.
Oluline on märkida, et iga aktiivne HTTP-ühendus (iga partii) nõuab eraldi protsessi või lõime (suurmeister). See arhitektuur on lihtne ja hõlpsasti laiendatav kolmanda osapoole moodulid(uued "reeglid"). Siiski on suur tasakaalustamatus: üsna kerge HTTP-ühendus, mida esindab faili deskriptor ja väike mälumaht, korreleerub eraldi protsess või niit, üsna raske objekt operatsioonisüsteemis. See on programmeerimiseks mugav, kuid väga raiskav.

NGINX nagu tõeline vanameister

Olete ilmselt kuulnud samaaegsetest mänguseanssidest, kui üks suurmeister mängib mitmel maleväljakul korraga kümnete vastastega?


Kiril Georgiev mängis Bulgaarias toimunud turniiril paralleelselt 360 mängu. Tema lõpptulemus oli: 284 võitu, 70 viiki ja 6 kaotust.

Samamoodi mängib malet NGINX-i töötaja protsess. Iga töötaja protsess (pidage meeles – tavaliselt ainult üks arvutituuma kohta) on suurmeister, kes suudab korraga mängida sadu (tegelikult sadu tuhandeid) mänge.

  1. Töötaja protsess kuulab sündmusi kuulamispesadel ja ühenduspesadel.
  2. Sündmused toimuvad pistikupesades ja protsess töötleb neid:
    • Sündmus kuulamispesas tähendab seda uus klient mängu alustamiseks. Töötaja protsess loob uue ühenduspesa.
    • Ühenduspesas olev sündmus annab märku, et klient on käigu teinud. Töövoog reageerib talle koheselt.
Töövoo töötlemine võrguliiklust, ei blokeeri kunagi, ootab vastase (kliendi) järgmist käiku. Kui protsess on oma käigu teinud, liigub see kohe teistele laudadele, kus mängijad ootavad käiku või kohtuvad uksel uutega.

Miks on see kiirem kui blokeeriv mitme keermega arhitektuur?

Iga uus ühendus loob faili deskriptor ja kulutab tööprotsessis vähe mälu. See on väga madal ühenduse üldkulu. NGINX-i protsessid võivad jääda seotuks konkreetsete protsessorituumadega. Konteksti vahetamine toimub üsna harva ja enamasti siis, kui enam tööd pole.

Blokeerimismeetod, kus iga ühenduse kohta on eraldi protsess, nõuab suhteliselt palju lisaressursid ja konteksti lülitud ühelt protsessilt teisele toimuvad palju sagedamini.

Lisateavet selle teema kohta leiate ka Andrei Aleksejevi, arenduse asepresidendi ja NGINX, Inc kaasasutaja artiklist NGINX arhitektuuri kohta.

Piisava süsteemikonfiguratsiooni korral mastaabib NGINX hästi sadade tuhandete paralleelsete HTTP-ühendusteni töötaja protsessi kohta ja neelab enesekindlalt liikluspurskeid (uute mängijate massid).

Konfiguratsiooni ja käivitatava koodi värskendamine

NGINX-i vähese tööjõuga arhitektuur võimaldab tal oma konfiguratsiooni ja isegi oma käivitatavat koodi käigupealt üsna tõhusalt värskendada.


NGINX-i konfiguratsiooni värskendamine on väga lihtne, kerge ja usaldusväärne protseduur. See koosneb lihtsalt SIGHUP-signaali saatmisest põhiprotsessile.

Kui töötaja protsess saab SIGHUP-i, teeb see mitu toimingut:

  1. Laadib konfiguratsiooni uuesti ja loob uus komplekt tööprotsessid. Need uued tööprotsessid alustavad kohe ühenduste vastuvõtmist ja liikluse töötlemist (kasutades uusi sätteid).
  2. Annab märku vanadele töövoogudele, et need lõpetaksid graatsiliselt. Nad lõpetavad uute ühenduste aktsepteerimise. Niipea, kui praegused HTTP-päringud on täidetud, ühendused suletakse (pole püsivaid elushoidmise ühendusi). Kui kõik ühendused on suletud, lõpeb töötaja protsess.
See protseduur võib põhjustada protsessori ja mälu koormuse väikese hüppe, kuid üldiselt on see aktiivsete ühenduste töötlemise kuludega võrreldes peaaegu märkamatu. Saate konfiguratsiooni mitu korda sekundis uuesti laadida (ja NGINX-i kasutajaid on üsna vähe). Harvadel juhtudel võivad probleemid tekkida siis, kui liiga palju NGINX-i tööprotsesside põlvkondi ootab ühenduste sulgemist, kuid need lahenevad kiiresti.

Värskenda käivitatav kood NGINX on Püha Graal kõrge kättesaadavus teenuseid. Saate serverit käigu pealt värskendada ilma ühenduste, ressursside seisaku või klienditeeninduse katkemiseta.

Nginx on populaarne ja võimas veebiserver ja pöördpuhverserver.

Nginxil on palju eeliseid, kuid selle seaded on üsna keerulised ega ole algajatele alati selged. See juhend aitab teil mõista Nginxi põhiparameetreid, süntaksit ja konfiguratsioonifaile.

Märge: See õpetus tehti Ubuntu 12.04-s.

Nginxi kataloogi hierarhia

Nginx salvestab konfiguratsioonifailid kataloogi /etc/nginx.

See kataloog sisaldab veel mitmeid katalooge ja modulaarseid konfiguratsioonifaile.

cd /etc/nginx
ls -F

conf.d/ koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params sites-enabled/

Apache'i kasutajad on juba tuttavad saitide jaoks saadaolevate ja saitide lubatud kataloogidega. Need kataloogid määravad saidi konfiguratsioonid. Failid luuakse ja salvestatakse tavaliselt saadaolevatel saitidel; sites-enabled salvestab ainult lubatud saitide konfiguratsioonid. Selleks peate looma sümboolne link saitidest-saadaval-saidid-lubatud.

Conf.d kataloogi saab kasutada ka seadistuste salvestamiseks. Iga .conf-laiendiga faili loetakse Nginxi käivitumisel. Selliste failide süntaks ei tohiks sisaldada vigu.

Peaaegu kõik ülejäänud failid on salvestatud kausta /etc/nginx, mis sisaldab konkreetsete protsesside või lisakomponentide konfiguratsiooniteavet.

Peamine Nginxi konfiguratsioonifail on nginx.conf.

nginx.conf faili

Fail nginx.conf loeb vastavad konfiguratsioonifailid ja ühendab need omavahel üksik fail konfiguratsioonid serveri käivitamisel.

Ava fail:

sudo nano /etc/nginx/nginx.conf

kasutaja www-andmed;
töötaja_protsessid 4;
pid /var/run/nginx.pid;
sündmused (
töötaja_ühendused 768;
#multi_accept on;
}
http(
. . .

Esimesed read annavad üldist teavet Nginxi kohta. Rea kasutaja www-data määrab kasutaja, kellega server käivitatakse.

Pid-direktiiv määrab, kus hoida Töötle PID-sid Sest sisemine kasutamine. Rida worker_processes määrab protsesside arvu, mida Nginx saab samaaegselt toetada.

Faili selles osas saate määrata ka logid (näiteks tõrkelogi määratletakse vea_logi direktiivi abil).

Taga Üldine informatsioon serveri kohta järgib sündmuste jaotist. See haldab Nginxi ühenduste haldamist. Sellele järgneb http plokk. Enne veebiserveri konfiguratsioonide jätkamist peame mõistma, kuidas Nginxi konfiguratsioonifail on vormindatud.

Nginxi konfiguratsioonifaili struktuur

Nginxi konfiguratsioonifail on jagatud plokkideks.

Esimene plokk on sündmused, millele järgneb http ja algab põhikonfiguratsioonide hierarhia.

http-ploki konfiguratsiooni üksikasjad on kihistatud suletud plokkide abil, mis pärivad omadused plokilt, milles need asuvad. http-plokk salvestab enamiku üldistest Nginxi konfiguratsioonidest, mis on jagatud serveriplokkideks, mis omakorda jagunevad asukohaplokkideks.

ajal Nginxi seaded oluline meeles pidada järgmine reegel: mida kõrgem on konfiguratsioonitase, seda rohkem plokke pärib selle konfiguratsiooni; mida madalam on konfiguratsioonitase, seda “individuaalsem” see on. Ehk kui igas serveriplokis tuleb kasutada X parameetrit, siis selline parameeter tuleb panna http plokki.

Kui vaatate faili tähelepanelikult, märkate, et see sisaldab palju valikuid, mis määravad programmi kui terviku käitumise.

Näiteks failide tihendamise konfigureerimiseks peate määrama järgmised parameetrid:

gzip sees;
gzip_disable "msie6";

See lubab gzipi toe kliendile saadetud andmete tihendamiseks ja keelab gzipi jaoks Internet Explorer 6 (kuna see brauser ei toeta andmete tihendamist).

Kui mõni parameeter peaks olema erinev tähendus mitmes serveriplokis, siis saab sellise parameetri sisse lülitada kõrgeim tase ja seejärel alistage see serveriplokkides endas. Selle tulemusel käivitab Nginx madalaima taseme parameetri.

Selline konfiguratsioonide kihilisus väldib vajadust hallata mitut identset faili. Samuti, kui unustasite parameetrid määratleda madalaim tase, rakendab Nginx lihtsalt vaikevalikuid.

http-plokk failis nginx.conf lõpeb järgmiselt:

sisaldab /etc/nginx/conf.d/*.conf;
sisaldab /etc/nginx/sites-enabled/*;

See tähendab, et serveri- ja asukohablokid, mis määravad konkreetsete saitide ja URL-ide seaded, salvestatakse väljaspool seda faili.

See võimaldab modulaarset konfiguratsiooniarhitektuuri, milles saab luua uusi faile uute saitide teenindamiseks. Samuti võimaldab see sarnaseid faile rühmitada.

Sulgege fail nginx.conf. Nüüd peate uurima üksikute saitide seadeid.

Nginxi virtuaalsed plokid

Nginxi serveriplokid on analoogsed virtuaalsetega Apache hosts(kuid mugavuse huvides nimetatakse neid ka virtuaalsed hostid). Põhimõtteliselt on serveriplokid spetsifikatsioonid samas serveris hostitud eraldi veebisaidid.

Saidide kataloogist leiate serveriga kaasasoleva serveriploki vaikefaili. See fail sisaldab kõiki saidi hooldamiseks vajalikke andmeid.

CD-saidid-saadaval
sudo nano vaikimisi

juur /usr/share/nginx/www;
indeks indeks.html index.htm;
serveri_nimi localhost;
asukoht/(

}
asukoht /doc/ (

alias /usr/share/doc/;
autoindeks sisse lülitatud;
luba 127.0.0.1;
keelata kõik;

Vaikefail on väga hästi kommenteeritud, kuid ülaltoodud näites on kommentaarid lihtsuse ja mugavuse huvides välja jäetud.

Serveriplokk sisaldab kõiki lokkis sulgude vahele asetatud sätteid:

server (
. . .
}

See plokk paigutatakse faili nginx.conf http-ploki lõppu, kasutades käsku include.

Juurdirektiiv määrab kataloogi, kuhu saidi sisu salvestatakse. Nginx otsib sellest kataloogist kasutaja soovitud faile. Vaikimisi on see /usr/share/nginx/www.

Pange tähele: kõik read lõpevad semikooloniga. Nii eraldab Nginx ühe direktiivi teisest. Kui semikoolonit pole, loeb Nginx kahte direktiivi (või mitut direktiivi) ühe direktiivina koos täiendavate argumentidega.

Indeksi direktiiv määrab failid, mida indeksina kasutatakse. Veebiserver kontrollib faile nende loendis olevas järjekorras. Kui lehekülge ei küsitud, leiab serveriplokk üles ja tagastab faili index.html. Kui see seda faili ei leia, proovib see töödelda index.htm-i.

serveri_nimi direktiiv

Direktiiv serveri_nimi sisaldab domeeninimede loendit, mida see serveriplokk teenindab. Domeenide arv on piiramatu; Loendis olevad domeenid tuleks eraldada tühikutega.

Tärn (*) domeeni alguses või lõpus määrab maskiga nime, kus tärn vastab osale (või mitmele osale) nimest. Näiteks nimi *.example.com ühtiks nimedega forum.example.com ja www.animals.example.com.

Kui taotletud URL vastab rohkem kui ühele direktiivile serveri_nimi, vastab see kõigepealt täpselt vastavale.

Kui aadress ei leia vastet, otsib see kõige rohkem pikk nimi maskiga, mis lõpeb tärniga. Kui ta sellist nime ei leia, tagastab see esimese regulaaravaldise vaste.

Regulaaravaldisi kasutavad serverinimed algavad tildemärgiga (~). Kahjuks see teema jääb selle artikli reguleerimisalast välja.

Asukoha plokid

Asukoht/rida määrab, et sulgudes olevad juhised rakenduvad kõigile nõutud ressurssidele, mis ei ühti ühegi teise asukohaplokiga.

Sellised plokid võivad sisaldada uri teed (näiteks /doc/). Asukoha ja uri täieliku vastavuse loomiseks kasutatakse sümbolit =. Märk ~ vastab regulaaravaldistele.

Tilde lubab tõstutundlikku režiimi, tärniga tilde aga tõstutundlikku režiimi.

Kui päring vastab täielikult asukohaplokile, peatab server otsingu ja kasutab sellist plokki. Kui server ei leia täielikult sobivat asukohaplokki, võrdleb ta URI-d asukohadirektiivide parameetritega. Nginx valib ploki, mis kasutab märgikombinatsiooni ^~ ja mis ühtib URI-ga.

Kui suvandit ^~ ei kasutata, valib Nginx lähima vaste ja sooritab regulaaravaldise otsingu, et proovida ühtida saadaolevad mallid. Kui ta sellise väljendi leiab, kasutab ta seda. Kui sellist avaldist pole, kasutab server varem leitud URI vastet.

Lõpetuseks eelistab Nginx täpseid vasteid. Kui selliseid vasteid pole, otsib ta regulaaravaldis ja seejärel otsib URI järgi. URI otsinguprioriteedi muutmiseks kasutage märgikombinatsiooni ^~.

direktiiv try_files

Direktiiv try_files on väga kasulik tööriist, mis kontrollib faile antud järjekorras ja kasutab päringu töötlemiseks esimest leitud faili.

See võimaldab teil kasutada lisaparameetrid määrake, kuidas Nginx taotlusi teenindab.

Vaikimisi konfiguratsioonifailis on rida:

proovi_failid $uri $uri/ /index.html;

See tähendab, et kui saabub päring, mida teenindab asukohaplokk, proovib Nginx esmalt uri-d failina teenindada (selle käitumise määrab $uri muutuja).

Kui server ei leia muutujale $uri vastet, proovib ta kasutada uri-d kataloogina.

Lõpu kaldkriipsuga kontrollib server kataloogi, näiteks $uri/ olemasolu.

Kui faili või kataloogi ei leita, käivitab Nginx vaikefaili (in sel juhul see on indeks.html serveriploki juurkataloogis). Iga try_files direktiiv kasutab viimast parameetrit tagavarana, seega peab fail süsteemis olemas olema.

Kui veebiserver ei leia eelmistes parameetrites vastet, võib see tagastada vealehe. Selleks kasutage võrdusmärki ja veakoodi.

Näiteks kui asukoht/plokk ei leia taotletud ressurssi, võib see faili index.html asemel tagastada vea 404:

proovi_failid $uri $uri/ =404;

Selleks tuleb panna võrdusmärk ja määrata viimaseks parameetriks veakood (=404).

Lisavalikud

Pseudonüümi direktiiv võimaldab Nginxil teenindada asukohaploki lehti väljaspool antud kataloogi (näiteks väljaspool juurkataloogi).

Näiteks failid, mida taotletakse /doc/, edastatakse /usr/share/doc/.

Direktiiv võimaldab teil lubada antud asukohadirektiivi jaoks Nginxi kataloogide loendit.

Lubamise ja keelamise read kontrollivad juurdepääsu kataloogidele.

Järeldus

Nginxi veebiserver on funktsioonirikas ja väga võimas, kuid selle terminoloogia ja valikud võivad segadust tekitada.

Olles tegelenud Nginxi konfiguratsioonid ja kui olete õppinud nendega töötama, saate kõik selle võimsa ja kerge tööriista eelised.

Sildid: ,

Nginx on veebiserver ja e-posti puhverserver, mis on olnud avalikult saadaval alates 2004. aastast. Projekti arendamine algas 2002. aastal, vene keeles kõlab nimi nagu engine-ex. Olles kätetöö kuulus programmeerija, Igor Sysoev, Nginx oli algselt mõeldud Rambleri ettevõttele. See on mõeldud Unixi-laadsesse rühma kuuluvate operatsioonisüsteemide jaoks. Koostu on edukalt testitud OpenBSD, FreeBSD, Linuxi, Mac OS X, Solarisega. Peal Microsofti platvorm Windows Nginx hakkas töötama binaarkoostu versiooni 0.7.52 tulekuga.

2011. aasta märtsi statistika näitab, et Nginxi teenindatavate saitide arv on juba ületanud 22 miljoni piiri. Tänapäeval kasutavad Nginxi sellised tuntud projektid nagu Rambler, Begun, Yandex, SourceForge.net, WordPress.com, vkontakte.ru ja teised. Koos lighttpd-ga kasutatakse Nginxi staatilise sisu teenindamiseks, mille on loonud "ebamugav" veebirakendus, mis töötab teise veebiserveri "volituse all".
Aga enne kui metsikusse loodusesse süveneme funktsionaalsed omadused Nginx - kasulik oleks meeles pidada, mis on veebiserver üldiselt ja puhverserver konkreetselt.

Veebiserver ja puhverserver

veebiserver on server, mis võtab vastu veebibrauserite ja teiste klientide HTTP-päringuid ning väljastab neile HTTP-vastuseid. Viimased on tavaliselt esindatud HTML leht, meediumivoog, pilt, fail, muud andmed. Veebiserver viitab nii veebiserveri funktsioone täitvale tarkvarale kui ka riistvarale. Andmete ja nõutud teabe vahetamine toimub HTTP-protokolli kaudu.

Lisa nimekirja lisafunktsioone veebiserverid hõlmavad järgmist: kasutajate autoriseerimine ja autentimine, nende ressurssidele juurdepääsu logimine, HTTPS-i tugi klientidega turvaliseks suhtluseks ja muud. Kõige sagedamini kasutatav veebiserver Unixi-laadsetes operatsioonisüsteemides on Apache. Nginx on praegu klientide eelistuste loendis kolmandal kohal.

Puhverserver võimaldab klientidel tegeleda otsingupäringud To võrguteenused kaudsel kujul. See tähendab, et see on server, mis on spetsialiseerunud klientide päringute teistele serveritele ümbersuunamisele. Ühendades puhverserveriga ja taotledes teises serveris asuvat ressurssi, on kliendil võimalus säilitada anonüümsus ja kaitsta arvutit võrgurünnakud. Puhverserver edastab kliendile küsitud andmed kas oma vahemälust (kui see on olemas) või saades need määratud server. IN mõningatel juhtudel(ülaltoodud eesmärkide saavutamiseks) saab puhverserver muuta serveri vastust, nagu ka kliendi päringut.

Lihtsaim puhverserver on Network Address Translator või NAT. Aastal 2000 ehitati sisse puhverserver NAT Windowsi levitamine. Puhverserveritel, nagu igal nähtusel, on mündi kaks külge, st neid saab kasutada nii hea kui kurja jaoks. Näiteks peidavad nende abiga oma IP-aadresse need, kes kardavad sanktsioone oma ebasobivate tegude eest Internetis...

Nginxi funktsionaalne vahemik:

  • serveriteenus indeksfailid, staatilised päringud, vahemälu deskriptorite genereerimine failid avada, faililoend;
  • kiirendatud puhverserver, elementaarne koormuse jaotus, tõrketaluvus;
  • vahemällu salvestamise tugi kiirendatud puhverserveri ja FastCGI ajal;
  • tugi FastCGI (kiirendatud) ja vahemällu salvestatud serveritele;
  • modulaarsus, filtrid, sealhulgas jätkamine (baidivahemikud) ja tihendamine (gzip);
  • HTTP autentimine, tükeldatud vastused, SSI-filter;
  • mitme alampäringu paralleelne täitmine lehel, mida töödeldakse FastCGI või SSI-filtri puhverserveri kaudu;
  • StartTLS ja SSL tugi;
  • sisseehitatud Perli toetamise võimalus;
  • lihtne autentimine (USER/PASS, LOGIN);
  • serveri ümbersuunamine (IMAP/POP3 puhverserver) kasutaja IMAP/POP3 taustaprogrammi kasutades väline server autentimine (HTTP).

Neile, kes pole selle terminoloogiaga tuttavad, võib Nginxi funktsionaalsuse kirjeldus tunduda väga ebamäärane. Aga kui rääkida viisidest spetsiifiline kasutamine see veebiserver – see hakkab tasapisi hajuma.

Arhitektuur ja konfiguratsioon

Nginxi tööprotsessid teenindavad samaaegselt paljusid ühendusi, pakkudes neile OS-i kõnesid ( operatsioonisüsteem) epoll (Linux), valige ja kqueue (FreeBSD). Kliendilt saadud andmed sõelutakse olekumasina abil. Parsitud päringut töötleb konfiguratsioonis määratud moodulite ahel. Vastus kliendile genereeritakse puhvrites, mis võivad osutada faili osale või salvestada andmeid mällu. Kliendile andmete edastamise järjestuse määravad ahelad, millesse puhvrid on rühmitatud.

Struktuuriliselt on Nginxi HTTP-server jagatud virtuaalserveriteks, mis omakorda on jagatud asukohtadeks. Virtuaalne server või direktiivi, saate määrata ühenduste vastuvõtmiseks pordid ja aadressid. Asukoha jaoks saate määrata täpse URI, osa URI-st või regulaaravaldise jaoks operatiivjuhtimine Mälu koondatakse, mis on eelvalitud mäluplokkide jada. Üks algselt basseini jaoks eraldatud plokk on pikkusega 1 kuni 16 kilobaiti. See on jagatud piirkondadeks - hõivatud ja hõivamata. Viimase täitumisel tagatakse uue objekti eraldamine uue ploki moodustamisega.

Klientide geograafiline klassifitseerimine nende IP-aadressi järgi toimub Nginxis spetsiaalse mooduli abil. Radixi puusüsteem võimaldab teil kiiresti töötada IP-aadressidega, hõivates minimaalselt mälu.

Nginxi eelised

Nginxit peetakse väga kiireks HTTP-server. Apache'i asemel või koos sellega kasutatakse päringu töötlemise kiirendamiseks ja serveri koormuse vähendamiseks Nginxi. Fakt on see, et tohutuid võimalusi, mis on omane Apache'i modulaarsele arhitektuurile, ei nõua enamik kasutajaid. Selle kasutamata funktsionaalsuse eest maksmine toob kaasa märkimisväärseid kulusid. süsteemi ressursse. Tavalisi saite iseloomustab reeglina skriptide asemel staatiliste failide (pildid, stiilifailid, JavaScript) selge domineerimine. Nende failide edastamiseks ressursikülastajale pole vaja erilisi funktsioone, kuna ülesanne on väga lihtne. See tähendab, et selliste päringute töötlemiseks mõeldud veebiserver peab olema lihtne ja kerge, nagu Nginx.

Nginxi kasutamise viisid

Eraldi pordis/IP-s. Kui ressurss on allalaadimiseks piltide või failidega küllastunud, saab Nginxi konfigureerida eraldi pordis või IP-s ja levitada selle kaudu staatilist sisu. Selleks peate aga veidi nuputama saidi linkide muutmisega. Kell suured hulgad Staatiliste failide jaoks on mõistlik luua päringuid eraldi server ja installige sellele Nginx.

Kiirendatud puhverserver. Selle valiku korral lähevad kõik külastajate taotlused kõigepealt Nginxile. Staatiliste failide (nt pildid, lihtne HTML, JavaScripti või CSS-faili) Nginx töötleb seda iseseisvalt. Kui kasutaja pääseb juurde konkreetsele skriptile, suunab ta päringu ümber Apache'i osakonda. Saidi koodiga pole vaja mingeid teisendusi teha.

Kui kanal serverist külastajani ja vastupidi on aeglane, siis Nginxi rakendus saab anda lisaefekt. Nginx edastab külastajalt saadud päringu töötlemiseks Apache'ile. Pärast päringu töötlemist edastab Apache lehe Nginxile ja lõpetab ühenduse saavutamise tundega. Nginx saab nüüd saata lehekülge kasutajale nii kaua kui soovitakse, praktiliselt ilma süsteemiressursse kulutamata. Apache töö tema asemel oleks põhjendamatult kaasas käinud suur koormus mälu jaoks peaaegu tühikäigul töötades. Muide, sellel Nginxi kasutusjuhul on teine ​​nimi: "Apache'i esiosa".

Nginx pluss FastCGI. Apache ei pruugi üldse vajalik olla, kui saidi skriptide kirjutamise keele tõlk toetab FastCGI tehnoloogiat. Selliste keelte hulka kuuluvad näiteks PHP, Perl ja mitmed teised. Kuid sel juhul peate võib-olla muutma skriptikoode.

Internetis on palju üksikasjalikke materjale Nginxi installimise ja konfigureerimise kohta. Lisateavet Nginxi kohta saate selle arendaja Igor Sysoevi veebisaidilt.