Apache versus Nginx: welke webserver is de betere keuze?

0
180

Nginx en Apache bedienen samen meer dan 50% van het internet. Maar Apache heeft de afgelopen jaren een daling gezien ten gunste van Nginx. Is Nginx echt beter en zijn er voordelen aan het gebruik van Apache?

Nginx is nieuwer en sneller

Nginx is veel lichter dan Apache. Dit is een probleem dat geworteld is in het ontwerp. Onder de motorkap moet Apache een nieuwe procesthread maken voor elke verbinding. En hoewel het 10 threads kan verwerken met een vergelijkbare snelheid als Nginx, neemt Nginx, wanneer het wordt opgeschaald naar honderden gelijktijdige verbindingen, een beslissende voorsprong.

Nginx werkt anders en kan meerdere verbindingen binnen één procesthread verwerken. Het is ontworpen om ook te functioneren als een eenvoudige omgekeerde proxy, dus in plaats van de overhead van een volledige webserver te brengen, is het eenvoudig ontworpen om bytes aan gegevens van de ene plaats naar de andere te verplaatsen. Nginx kan meer dan twee keer zo snel zijn als Apache bij het aanbieden van statische inhoud, en veel minder CPU-intensief wanneer dit wordt gedaan, waardoor het uitstekend geschikt is voor gebruik op systemen met een laag vermogen.

Deze snelheid is echter alleen echt van belang bij het serveren statische inhoud voor veel gebruikers tegelijk. Wanneer je dynamische content gaat aanbieden, ligt het knelpunt ergens anders, zoals in je PHP-engine, je webapp of je database.

Omdat Nginx ook een reverse proxy is, kun je het voor een andere server (zelfs Apache) gebruiken, specifiek om statische inhoud te hosten. Een handig voorbeeld is server-side rendering Node-applicaties, waar HTTP-verzoeken naar dynamische pagina's moeten worden doorgestuurd naar een server waarop Express wordt uitgevoerd, maar statische bronnen (afbeeldingen, stylesheets, enz.) Kunnen worden bediend vanuit Nginx. De overhead is minimaal en kan statische inhoud aanzienlijk versnellen.

Apache is beter configureerbaar

Apache is meer gericht op het zijn van een webserver en heeft een aantal handige functies, zoals op mappen gebaseerde configuratiebestanden en virtuele hosts. Dit maakt het heel eenvoudig om meerdere sites op dezelfde server te draaien. U kunt bijvoorbeeld een VirtualHost-blok zoals dit toevoegen aan /etc/httpd/conf/httpd.conf:

<VirtualHost 127.0.0.1:80> DocumentRoot /var/www/html Servernaam www.firstsite.com </VirtualHost> Advertentie

Hierdoor stuurt Apache alle verzoeken naar www.firstsite.com naar een specifieke map, die zijn eigen instellingen kan hebben, onafhankelijk van andere sites die op de server worden uitgevoerd. Dit kan verder worden aangevuld met .htaccess-bestanden, die de serverconfiguratie voor een specifieke map kunnen overschrijven. Het uitvoeren van sites met .htaccess-bestanden is echter langzamer dan het gebruik van global config, en wordt alleen aanbevolen in gevallen waarin u andere gebruikers wilt toestaan ​​de serverinstellingen voor een directory te wijzigen zonder de globale config aan te raken (gedeelde hosting is het belangrijkste voorbeeld hiervan ).

Nginx kan ook meerdere domeinen vanaf een enkele server bedienen en deze naar hun eigen mappen routeren, maar het is gewoon niet zo configureerbaar, vooral met een gebrek aan functionaliteit vergelijkbaar met .htaccess. Maar als je dat soort functionaliteit echt nodig hebt, kun je Nginx gebruiken als een omgekeerde proxy om toegang te krijgen tot content die elders wordt aangeboden, zelfs op een andere instantie van Nginx of meerdere Docker-containers.

Apache heeft ook veel betere ondersteuning voor plug-ins, in de vorm van modules die dynamisch kunnen worden geladen zonder de server opnieuw op te starten. Nginx ondersteunt ook modules, maar het laden van modules is pas recentelijk toegevoegd, dus voor veel modules moet je het binaire bestand nog patchen.

Welke server moet je kiezen?

Welke server moet je kiezen?

Ondanks de tekortkomingen zijn het beide fatsoenlijke webservers. Ze zijn zowel gratis als open source, hoewel Nginx wel een betaalde versie heeft, Nginx Plus genaamd, die een software-load balancer toevoegt bovenop open-source Nginx. Beide servers zijn veilig, hebben goede ondersteuningsgemeenschappen en zijn eenvoudig te configureren. Hoewel Nginx wint in snelheid, zijn beide vergelijkbaar in het aanbieden van dynamische inhoud.

Als je niet zeker weet welke je moet gebruiken, kies dan voor Nginx. Als je een Unix-systeem gebruikt, is Nginx over het algemeen een goede keuze vanwege de snelheid en het gebruiksgemak. Als je meer configuratie nodig hebt, vooral als je veel websites vanaf dezelfde server gebruikt, kan Apache beter werken.

Advertentie

Een ding om op te merken is dat als je gebruik van PHP, is de setup voor Nginx een beetje anders. Apache voert native PHP in hetzelfde proces uit en communiceert rechtstreeks met de PHP-engine. Nginx voert het uit in een apart proces (PHP-FPM) en communiceert ermee als een omgekeerde proxy. Beide methoden zijn net zo snel, maar uw configuratie zal variëren.

Nginx en Apache ondersteunen beide volledig elk Unix-systeem, inclusief FreeBSD. Hoewel Nginx technisch gezien een versie heeft die op Windows draait, is het niet de beste. Apache wordt volledig ondersteund op Windows en is als zodanig de go-to-webserver op dat platform.