Nginx vs Apache: onderlinge vergelijking en hoe te kiezen

Bijgewerkt: 2022-04-19 / Artikel door: Timothy Shim

Te gebruiken zowel Nginx en apache zijn volwassen producten met uitgebreide functiesets en hoge prestaties. Ze delen een gemeenschappelijke open source-oorsprong en u kunt ze implementeren op Windows- of Linux-servers. 

Sommige belangrijke verschillen kunnen er echter voor zorgen dat u de ene boven de andere kiest.

Apache is bijvoorbeeld een uitgebreide oplossing die out-of-the-box veel verschillende technologieën en modules ondersteunt. Nginx daarentegen vertrouwt op modules van derden om de functionaliteit uit te breiden.

Om te zien welke webserver misschien beter aansluit bij uw behoeften, laten we dieper ingaan op deze opties.

Apache – De originele Hero-webserver

apache

Gemaakt in 1995 door Robert McCool en oorspronkelijk het "Apache HTTP Server Project" genoemd (vandaar de naam), werd Apache ontworpen om een ​​robuuste, commerciële server te creëren die gratis te gebruiken is, zelfs met aanpassingen. Het werd heel snel populair omdat het op veel verschillende besturingssystemen kon draaien, van Unix tot Windows.

Vanwege deze langdurige populariteit beschouw ik Apache als de "originele held" webserver. Het is robuust, goed gedocumenteerd en wordt ondersteund door een open gemeenschap van ontwikkelaars onder auspiciën van de Apache Software Foundation.

Nginx – Titan van een nieuw tijdperk

Nginx

Nginx (uitgesproken als "Engine X") is een HTTP- en reverse-proxyserver, een mailproxyserver en een generieke TCP/UDP-proxyserver die wordt gebruikt om websites en applicaties van elke omvang te hosten. Het werd voor het eerst publiekelijk vrijgegeven door de Russische ontwikkelaar Igor Sysoev. Het oorspronkelijke doel van Nginx was om het C10K-probleem op te lossen waar Apache maar moeilijk mee om kon gaan. 

Lees ook

Opmerkelijke verschillen tussen Nginx en Apache

Buildings

Nginx en Apache delen enkele overeenkomsten in hun kernarchitectuur. Ze gebruiken bijvoorbeeld allebei master-worker-processen om de prestaties te verbeteren. Ze hebben zelfs vergelijkbare configuratiebestanden. Toch resulteren de verschillen in architecturale stijl in een aanzienlijke prestatievariatie in brede zin.

Nginx heeft een resource-vriendelijke gebeurtenisgestuurde architectuur die kleine maar constante hoeveelheden geheugen gebruikt onder belasting. Dit kenmerk maakt het ideaal voor het hosten van websites met veel verkeer of websites met intermitterende verkeerspieken.

De procesgestuurde architectuur van Apache verwerkt elke verbinding via een speciale thread, waarvoor meer geheugen nodig is. Het schaalt echter beter onder zware belasting op machines met meer CPU-kernen en RAM.

Geheugengebruik

Nginx staat bekend om zijn hoge prestaties en laag verbruik van hulpbronnen. Aan de andere kant kan Apache geheugenintensief zijn, vooral bij het uitvoeren van meerdere serverblokken. Hoewel beide geheugen gebruiken om HTTP-verzoeken af ​​te handelen, is Nginx lichter. 

Het ontwerp van Apache betekende dat het één thread per verbinding voortbracht en dat elke thread een bepaalde hoeveelheid RAM zou gebruiken. Naarmate het verkeer toenam, zou dit tot problemen kunnen leiden omdat er meer RAM nodig zou zijn, vooral op servers met minder geheugen. Apache creëert ook nieuwe processen voor elk verzoek, zelfs van dezelfde gebruiker.

Ter vergelijking: Nginx gebruikt één proces om meerdere verbindingen tegelijk af te handelen. 

PHP-afhandeling

Omdat beide webservers voornamelijk werken met: PHP, hoe ze omgaan met de code betekent een aanzienlijk prestatiepotentieel. Nginx voert PHP standaard niet rechtstreeks uit. In plaats daarvan geeft het het verzoek door aan PHP-FPM (FastCGI Process Manager), die het verzoek afhandelt en een reactie terugstuurt naar Nginx, die de inhoud vervolgens terugstuurt naar de klant.

Omdat Nginx niet wacht op een reactie van PHP-FPM om een ​​ander verzoek in te dienen (vergelijkbaar met hoe het niet wacht op een reactie van klanten bij het aanbieden van statische inhoud), kan Nginx meer verzoeken tegelijk verwerken dan Apache aankan.

Apache gebruikt een module genaamd mod_php om PHP-code uit te voeren. In dit model spawnt Apache elke keer dat een HTTP-verzoek binnenkomt een nieuw proces of nieuwe thread (afhankelijk van hoe het is geconfigureerd) om dat verzoek af te handelen. Dit proces is ook verantwoordelijk voor het afhandelen van PHP-verzoeken binnen dat verzoek.

Dit model werkt, maar heeft enkele nadelen. Om te beginnen kan het opzetten van een nieuw proces voor elk verzoek intensief zijn op het systeem, vooral als er veel gelijktijdige verzoeken zijn. Het genereren van een nieuw proces voor elk PHP-verzoek binnen een verzoek is zelfs nog intensiever omdat het besturingssysteem voor elk een geheel nieuwe interpreter moet voortbrengen.

Hoe te kiezen tussen Nginx en Apache

Zoals je kunt zien, is er geen duidelijke winnaar tussen deze webserver-reuzen. Het hangt vooral af van wat u de webserver nodig heeft om te beheren. 

Kies Apache als: 

  • U heeft een middelgrote/grote website die in de loop van de tijd waarschijnlijk aanzienlijk zal groeien en aangepaste modules vereist.
  • Je hebt veel virtuele hosts of modules ingeschakeld op je server en hebt ze allemaal nodig bij het opstarten.
  • U heeft een kleine website en u wilt geen tijd besteden aan het leren hoe u Nginx correct kunt configureren.

Gebruik Nginx als:

  • U beheert een grootschalige website en wilt tegelijkertijd eenvoudig caching & load balancing configureren zonder u zorgen te maken over hardwarebeperkingen.

Laatste gedachten over Nginx vs Apache

Of u Apache of Nginx gebruikt, hangt af van uw behoeften en de hardware die u gebruikt. U kunt beide opties gebruiken voor het aanbieden van PHP-websites. Maar er komt veel meer bij kijken dan alleen dat. 

Als u een eenvoudige website heeft, merkt u mogelijk geen verschil tussen beide. Maar als uw site meer verkeer krijgt en groeit, moet u weten hoe elke server presteert en schaalt onder belasting.

Lees ook

Over Timothy Shim

Timothy Shim is een schrijver, redacteur en tech nerd. Begonnen zijn carrière op het gebied van informatietechnologie, vond hij snel zijn weg in druk en heeft sindsdien gewerkt met internationale, regionale en nationale mediatitels zoals ComputerWorld, PC.com, Business Today en The Asian Banker. Zijn expertise ligt op het gebied van technologie, zowel vanuit het oogpunt van de consument als van de onderneming.