Nginx-gids introductie

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.

Proxyserver omkeren

Het gebruik van een reverse proxy is erg belangrijk omdat het helpt bij:

  1. het bestaan ​​en de kenmerken van de werkelijke oorsprongserver te verbergen
  2. de belasting verdelen
  3. comprimeren en caching van inhoud
  4. A / B testen
  5. verzoek / responsmanipulatie
Bron: Wikipedia

HTTP-server (vs. Apache)

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.

Architectuur en internals

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-toepassingen

De 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:

  1. Client verzendt HTTP-verzoek.
  2. De kern van Nginx kiest de juiste fase-afhandelaar op basis van de geconfigureerde locatie die overeenkomt met het verzoek.
  3. Als dit is geconfigureerd, kiest een load balancer een upstream-server voor proxying.
  4. Fase-handler doet zijn werk en geeft elke uitvoerbuffer door aan het eerste filter.
  5. Eerste filter geeft de uitvoer door aan het tweede filter.
  6. Tweede filter geeft de uitvoer door aan de derde (enzovoort).
  7. Laatste antwoord wordt verzonden naar de klant.

Deze gelaagde en losjes gekoppelde maar zeer samenhangende aanpak maakt het echt goed in wat het doet.

Downloaden en installeren

Nginx-configuratie

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. 

nginx.conf

#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.