Concurrency en snellere laadtijden zijn altijd al een uitdaging geweest voor elke website met veel verkeer. Om sites sneller te laden, openen browsers meerdere verbindingen naar een webserver om inhoud parallel te laden. Gecombineerd met persistente verbindingen moet de webserver echt robuust zijn en niet-lineair schalen met het aantal verzoeken.
Het wordt erg belangrijk dat de website gebaseerd is op een aantal losjes verbonden maar zeer samenhangende bouwstenen, en nginx is echt een belangrijk stuk om dat te kunnen bereiken..
Nginx (uitgesproken als engine x) is een lichtgewicht, gratis, open-source HTTP- en reverse proxy-server, evenals een mail-proxyserver.
Nginx kan worden gebruikt als een volledige vervanging voor andere HTTP-servers zoals Apache, of kan ook vóór de bestaande infrastructuur staan om te werken als een reverse-proxy.
Het gebruik van een reverse proxy is erg belangrijk omdat het helpt bij:
Hoe verschilt nginx van Apache? Nginx is op gebeurtenissen gebaseerd en asynchroon, terwijl Apache volledig afhankelijk is van threads. Op een webserver met een relatief hoog verkeersaanbod worden threads gebruikt om geheugen leeg te maken. Een gebeurtenis op basis van een asynchroon en niet-blokkerend model (van nginx) is in zo'n geval een duidelijke winnaar.
Het heeft een enkel hoofdproces en verschillende 'werkprocessen' die worden uitgevoerd onder een onbevoegde gebruiker. Binnen elke werknemer kan nginx enkele duizenden verbindingen verwerken.
Bron: de architectuur van open source-toepassingenDe nginx arbeider
code bevat de kern- en functionele modules. Met de modulaire architectuur van Nginx kunt u de functies van de webserver uitbreiden zonder de kern te wijzigen. Modules lezen en schrijven naar het netwerk en naar opslag, transformeren inhoud, geven de aanvragen door aan oorspronkelijke servers, omvatten acties op de server en andere dingen. Modules vormen voornamelijk de applicatielaag en presentatiefunctionaliteit.
Nginx-modules hebben verschillende vormen: kernmodules, gebeurtenismodules, fasehandlers, protocollen, variabele handlers, filters, upstreams en loadbalancers. Op dit moment ondersteunt nginx geen dynamisch geladen modules, dus modules moeten tijdens de build samen met de kern worden samengesteld.
Nginx verwerkt verbindingen als modules die als een ketting met elkaar zijn verbonden. Voor elke bewerking is er een module die het relevante werk doet, bijvoorbeeld compressie, wijziging van inhoud, uitvoeren van server-side omvat, en communiceren met de upstream applicatieservers. Een typische verwerkingscyclus voor HTTP-aanvragen ziet er als volgt uit:
Deze gelaagde en losjes gekoppelde maar zeer samenhangende aanpak maakt het echt goed in wat het doet.
Downloaden en installeren
Nginx-configuratie bevindt zich in tekstbestanden, meestal op / Usr / local / etc / nginx
of / Etc / nginx
. Het hoofdconfiguratiebestand wordt genoemd nginx.conf
. Het Nginx-configuratiebestand is in wezen een lijst met richtlijnen die is georganiseerd in een logische structuur. Het volledige gedrag van de toepassing wordt bepaald door de waarden die u aan die richtlijnen geeft.
#user niemand; worker_processes 1; #error_log logs / error.log; #error_log logs / error.log notice; #error_log logs / error.log info; #pid logs / nginx.pid; evenementen worker_connections 1024; http ...
Hierboven ziet u een klein uittreksel van een standaard nginx conf (geannoteerd met uitleg). Het volledige bestand kan ook worden gevonden op /usr/local/etc/nginx/nginx.conf.default
. De essentie probeert in detail over elke richtlijn uit te leggen.
Dit artikel introduceerde wat nginx is en de belangrijke rol die het speelt bij het sneller maken van websites. Het heeft ook de richtlijnen in het configuratiebestand aangeroerd. Het tweede deel van het artikel gaat verder met het toelichten en geven van enkele recepten voor het gebruik van nginx in verschillende contexten en ook het praten over must-use modules van nginx.