Nginx vs. Apache: Kopf-an-Kopf-Vergleich und Auswahl

Aktualisiert: 2022-04-19 / Artikel von: Timothy Shim

Beide Nginx und Apache sind ausgereifte Produkte mit umfangreichen Funktionen und hoher Leistung. Sie haben gemeinsame Open-Source-Ursprünge und Sie können sie entweder auf Windows- oder Linux-Servern bereitstellen. 

Einige wichtige Unterschiede können jedoch dazu führen, dass Sie sich für eines entscheiden.

Apache ist beispielsweise eine umfassende Lösung, die viele verschiedene Technologien und Module out-of-the-box unterstützt. Im Gegensatz dazu setzt Nginx auf Module von Drittanbietern, um seine Funktionalität zu erweitern.

Um zu sehen welche Web-Server möglicherweise besser zu Ihren Anforderungen passt, lassen Sie uns diese Optionen genauer untersuchen.

Apache – Der ursprüngliche Hero-Webserver

Apache

Erstellt im Jahr 1995 von Robert McCool und ursprünglich als „Apache HTTP Server Project“ (daher der Name) bezeichnet, wurde Apache entwickelt, um einen robusten, kommerziellen Server zu erstellen, der auch mit Modifikationen kostenlos verwendet werden kann. Es wurde sehr schnell populär, weil es auf vielen verschiedenen Betriebssystemen von Unix bis Windows laufen konnte.

Aufgrund dieser langjährigen Popularität betrachte ich Apache als den „ursprünglichen Helden“-Webserver. Es ist robust, gut dokumentiert und wird von einer offenen Entwicklergemeinschaft unter der Schirmherrschaft der Apache Software Foundation unterstützt.

Nginx – Titan einer neuen Ära

Nginx

Nginx (ausgesprochen als „Engine X“) ist ein HTTP- und Reverse-Proxy-Server, ein Mail-Proxy-Server und ein generischer TCP/UDP-Proxy-Server, der zum Hosten von Websites und Anwendungen aller Größen verwendet wird. Es wurde erstmals von einem russischen Entwickler veröffentlicht Igor Sysoev. Das ursprüngliche Ziel von Nginx war es, das C10K-Problem zu lösen, mit dem Apache Probleme hatte. 

Lesen Sie auch

Bemerkenswerte Unterschiede zwischen Nginx und Apache

Architektur

Nginx und Apache haben einige Gemeinsamkeiten in ihrer Kernarchitektur. Beispielsweise verwenden beide Master-Worker-Prozesse, um die Leistung zu verbessern. Sie haben sogar ähnliche Konfigurationsdateien. Die Unterschiede im architektonischen Stil führen jedoch zu erheblichen Schwankungen der Gesamtleistung.

Nginx verfügt über eine ressourcenfreundliche, ereignisgesteuerte Architektur, die unter Last kleine, aber konstante Speichermengen verwendet. Diese Eigenschaft macht es ideal für das Hosten von Websites mit hohem Verkehrsaufkommen oder solchen mit zeitweiligen Verkehrsspitzen.

Die prozessgesteuerte Architektur von Apache verarbeitet jede Verbindung über einen dedizierten Thread, der mehr Speicher benötigt. Es skaliert jedoch besser unter hoher Last auf Maschinen mit mehr CPU-Kernen und RAM.

Memory Usage

Nginx ist bekannt für seine hohe Leistung und seinen geringen Ressourcenverbrauch. Andererseits kann Apache speicherintensiv sein, insbesondere wenn mehrere Serverblöcke ausgeführt werden. Während beide Speicher verwenden, um HTTP-Anforderungen zu verarbeiten, ist Nginx leichter. 

Das Design von Apache bedeutete, dass es einen Thread pro Verbindung hervorbrachte und jeder Thread eine bestimmte Menge an RAM benötigte. Bei zunehmendem Datenverkehr könnte dies zu Problemen führen, da mehr RAM erforderlich wäre, insbesondere auf Servern mit weniger Arbeitsspeicher. Apache erstellt auch neue Prozesse für jede Anfrage, sogar von demselben Benutzer.

Im Vergleich dazu verwendet Nginx einen Prozess, um mehrere Verbindungen gleichzeitig zu verarbeiten. 

PHP-Handhabung

Denn diese beiden Webserver arbeiten hauptsächlich mit PHP, wie sie mit dem Code umgehen, bedeutet ein erhebliches Leistungspotenzial. Nginx führt PHP standardmäßig nicht direkt aus. Stattdessen übergibt es die Anfrage an PHP-FPM (FastCGI Process Manager), das die Anfrage verarbeitet und eine Antwort an Nginx zurücksendet, das dann den Inhalt an den Client zurückliefert.

Da Nginx nicht auf eine Antwort von PHP-FPM wartet, um eine weitere Anfrage zu bedienen (ähnlich wie es beim Bereitstellen statischer Inhalte nicht auf eine Antwort von Clients wartet), kann Nginx mehr Anfragen gleichzeitig verarbeiten, als Apache verwalten kann.

Apache verwendet ein Modul namens mod_php, um PHP-Code auszuführen. In diesem Modell erzeugt Apache jedes Mal, wenn eine HTTP-Anforderung eingeht, einen neuen Prozess oder Thread (je nach Konfiguration), um diese Anforderung zu verarbeiten. Dieser Prozess ist auch für die Bearbeitung aller PHP-Anfragen innerhalb dieser Anfrage verantwortlich.

Dieses Modell funktioniert, hat aber einige Nachteile. Zum einen kann das Erzeugen eines neuen Prozesses für jede Anfrage sehr arbeitsintensiv für das System sein, insbesondere wenn es viele gleichzeitige Anfragen gibt. Das Generieren eines neuen Prozesses für jeden PHP-Request innerhalb eines Requests ist noch intensiver, da das Betriebssystem für jeden einen brandneuen Interpreter erzeugen muss.

So wählen Sie zwischen Nginx und Apache

Wie Sie sehen können, gibt es keinen klaren Gewinner zwischen diesen Webserver-Giganten. Es hängt hauptsächlich davon ab, was der Webserver verwalten soll. 

Wählen Sie Apache, wenn: 

  • Sie betreiben eine mittelgroße/große Website, die im Laufe der Zeit wahrscheinlich erheblich wachsen wird und benutzerdefinierte Module erfordert.
  • Sie haben viele virtuelle Hosts oder Module in Ihrem Server aktiviert und benötigen sie alle beim Start.
  • Sie betreiben eine kleine Website und möchten nicht die Zeit damit verbringen, zu lernen, wie man Nginx richtig konfiguriert.

Verwenden Sie Nginx, wenn:

  • Sie betreiben eine große Website und möchten Caching und Lastenausgleich gleichzeitig einfach konfigurieren, ohne sich um Hardwareeinschränkungen kümmern zu müssen.

Abschließende Gedanken zu Nginx vs. Apache

Ob Sie Apache oder Nginx ausführen, hängt von Ihren Anforderungen und der verwendeten Hardware ab. Sie können beide Optionen zum Bereitstellen von PHP-Websites verwenden. Aber es gibt noch viel mehr zu beachten als nur das. 

Wenn Sie eine einfache Website haben, bemerken Sie möglicherweise keinen Unterschied zwischen ihnen. Wenn Ihre Website jedoch mehr Verkehr erhält und wächst, müssen Sie wissen, wie jeder Server unter Last funktioniert und skaliert.

Lesen Sie auch

Über Timothy Shim

Timothy Shim ist ein Schriftsteller, Redakteur und Tech-Geek. Er begann seine Karriere auf dem Gebiet der Informationstechnologie und fand schnell seinen Weg in die Printmedien. Seitdem arbeitet er mit internationalen, regionalen und einheimischen Medientiteln wie ComputerWorld, PC.com, Business Today und The Asian Banker zusammen. Seine Expertise liegt im Bereich der Technologie sowohl aus Sicht der Verbraucher als auch der Unternehmen.