Apache en NGINX servers bij Versio

Gewijzigd op Do, 7 Nov om 12:44 PM

Als je klant bent bij Versio kun je een VPS afnemen. Daarmee heb je een eigen server die je naar wens kunt optuigen. Je kiest daarbij ook een systeem om de server op te laten draaien. In dit artikel bespreken we twee populaire varianten: Apache en NGINX.


Inhoudsopgave


Inleiding

Voor het opzetten van een eigen webserver op je VPS zijn zowel Apache als NGINX erg populair. Van deze twee is Apache de langst bestaande en daardoor lange tijd de standaard op Linux systemen. NGINX wint echter steeds meer aan bekendheid en rukt daardoor gestaag op. We belichten we in dit artikel de verschillen tussen beide webservers.


Laten we meteen vooropstellen dat zowel Apache als NGINX allebei betrouwbare systemen zijn. Hoewel NGINX de jongste van de twee is, heeft deze webserver inmiddels ook al lang bewezen dat het een veilig en robuust systeem is. In dat opzicht kun je dus aan geen van beide servers een buil vallen.


Als je overigens op een VPS met Microsoft Windows niet diens webserver IIS, maar een open source variant wil gebruiken, dan is eigenlijk alleen Apache een optie. Deze ondersteunt namelijk Windows volledig, terwijl NGINX officieel de server alleen voor Linux en BSD varianten aanbiedt.


Connecties en workers

Van begin af aan was bij NGINX performance het uitgangspunt. In essentie ontkoppelt NGINX de connectie en de worker (de uitvoerder van taken). Elke worker checkt of er een connectie is met een uit te voeren taak. De worker handelt dat af en gaat dan door naar een volgende connectie.


NGINX schaalt daardoor uitstekend en kan probleemloos duizenden, zelfs tienduizenden, connecties gelijktijdig aan. Daarbij gaat NGINX zuinig om met resources en eist minder van de hardware.


Apache wijst juist per connectie een worker aan. Hoe meer connecties Apache moet afhandelen, hoe meer workers er in actie moeten komen. Dat kost met name veel RAM. Apache schaalt daardoor niet zo goed voor websites met hoge volumes of piekbelastingen.


Statische en dynamische webcontent

We moeten hierbij wel een kanttekening plaatsen. NGINX serveert statische webpagina's erg snel. Het laat dynamische content echter aan andere software over. Bij dynamische content speelt de afhandeltijd door bijvoorbeeld de PHP interpreter de grootste rol. Daarom presteert Apache voor deze content niet of nauwelijks minder dan NGINX.


NGINX stuurt verzoeken voor dynamische content naar de externe interpreter omwille van performance. Omdat NGINX dit niet zelf afhandelt, blijft de webserver een lichtgewicht met weinig overhead. De beheerder moet de communicatie tussen de webserver en interpreter wel regelen. Voordeel bij Apache is dat voor dynamische content de configuratie eenvoudiger is. Die gebruikt namelijk eigen modules om dynamische content af te handelen.


Dynamic Apache Modules

Met Apache modules pas je de core functionaliteit van de webserver dynamisch aan. Dat doe je door de betreffende module in het geheugen te laden. Op deze manier handelt Apache bijvoorbeeld PHP af. De interpreter hiervan is als module ingebed in Apache, zodat de webserver voor het uitvoeren van PHP scripts niet naar een externe applicatie hoeft te grijpen. Niet alleen voor allerlei programmeertalen heb je modules. Er zijn tientallen beschikbaar, variërend van Kerberos authenticatie en proxy functionaliteit tot media streaming.


NGINX is weliswaar modulair van opzet, maar dat is nog grotendeels statisch. Dat wil zeggen dat je tijdens het compileren van de software moet bepalen welke functionaliteit de webserver krijgt. Overigens is NGINX recentelijk ook begonnen met het ondersteunen van dynamische modules. Dit is echter nog niet op het niveau van Apache.


Gedistribueerde of centrale configuratie

Apache kent behalve een centrale configuratie tevens het .htaccess bestand. Hierin plaats je configuratie-opties en vervolgens zet je het bestand in een directory met web content. De configuratie-opties hebben dan betrekking op de bestanden in die directory en diens subdirectories. Apache leest deze .htaccess bestanden telkens opnieuw in. Aanpassingen zijn dus meteen zichtbaar bij het nogmaals opvragen van de webpagina.


Daardoor kun je als sitebeheerder heel makkelijk per webapplicatie of zelfs daarbinnen de configuratie aanpassen. De sitebeheerder heeft geen toegangsrechten nodig tot de centrale configuratie van Apache. Content management systemen en shared hosting services maken hiervan dankbaar gebruik.


NGINX daarentegen kent geen configuratiebestanden op directory niveau. Het voordeel zit hem wederom in performance. Apache moet voor elke directory in het pad naar het gevraagde bestand nagaan of er een .htaccess bestand is en zo ja, dat uitvoeren. Dat hoeft NGINX niet en kan zodoende meteen de webcontent leveren.


Samen sterk

Het is heel goed mogelijk om NGINX en Apache samen in te zetten. NGINX functioneert dan als proxyserver voor één of meerdere Apache servers. NGINX is daarbij tevens cache server en loadbalancer. Bovendien levert NGINX de statische webpagina's, omdat deze webserver daarin excelleert. Apache handelt de dynamische content af. Op deze manier combineer je de flexibiliteit van Apache met de performance van NGINX.

Was dit artikel nuttig?

Dat is fantastisch!

Hartelijk dank voor uw beoordeling

Sorry dat we u niet konden helpen

Hartelijk dank voor uw beoordeling

Laat ons weten hoe we dit artikel kunnen verbeteren!

Selecteer tenminste een van de redenen
CAPTCHA-verificatie is vereist.

Feedback verzonden

We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren