Apache oder Nginx – Die populären Webserver im Vergleich

Webserver Apache und Nginx Vergleich

So wählen Sie den passenden Webserver

Lange Zeit galt Apache als der Webserver schlechthin und lief fast ausnahmslos auf allen Servern. Komfortabel in der Administration, ausgezeichnete Performance, dank eines modularen Aufbaus individuell erweiterbar und nicht zuletzt auch ein sicherer Webserver. IT-Profis schätzten die Vorzüge des „Indianers“ und so konnte er jahrelang praktisch eine Monopolstellung halten und verbreitete rund 80 % aller Webseiten im Internet und mehr. Bis Mitte 2017 ist der Anteil auf etwa 45 % gefallen (https://news.netcraft.com/archives/2017/08/29/august-2017-web-server-survey.html). Immer noch ein beachtlicher Wert, aber ein Blick auf die Top 1000 aller Homepages relativiert diese Einschätzung. Bei ihnen setzen nur noch etwas mehr als ein Viertel auf Apache – fast doppelt so viele, nämlich 49 %, laufen bereits auf einem Nginx Server – der Name steht für Engine X und wird auch so ausgesprochen.

Apache und Nginx – Unterschiede und Gemeinsamkeiten

Apache und Nginx stehen als Webserver für zwei vollständig unterschiedliche Ansätze. Apache besitzt traditionell eine modulare Architektur, bei der Sie Funktionen je nach Bedarf über die entsprechenden Module einbinden oder ausschließen können. Das können Erweiterungen wie etwa der Parser mod_rewrite sein, mit dem sich URLs während der Verarbeitung umschreiben oder auf spezielle Pfade des Dateisystems umlenken lassen. Das können aber auch Skriptsprachen wie PHP sein, die von dem Browser selbst interpretiert werden können, ohne dass es dafür externe Programme benötigt. Ganz anders arbeitet der Nginx Webserver: Er ist darauf ausgelegt, statische Webseiten in HTML-Code auszuliefern. Dynamische Anfragen werden nicht von dem Programm verarbeitet, sondern über eine Proxy-Schnittstelle an die entsprechende Software übergeben.

Auch in der Art, wie Verbindungen gehandhabt werden, unterscheiden sich beide Programme grundlegend. Bei Apache übernehmen auch hier dedizierte Module die Tasks und sorgen damit für eine hohe Flexibilität. Der Server unter Apache bietet sowohl die Möglichkeit, jede Verbindung als einzelnen Prozess zu bearbeiten, wie auch die Bündelung mehrerer Anfragen zu einzelne Threads innerhalb eines Prozesses. Nginx besitzt hingegen von Beginn an ein Event-gesteuertes Design. Es parkt bis zu tausende Verbindungen in einem einzelnen Prozess und verwendet einen rasch durchlaufenden Loop, um Ereignisse zu erkennen und zu verarbeiten.

Apache verwendet zudem einen dezentralen Ansatz und erlaubt diverse einfache vorgelagerte Definitionen durch die beliebten und häufig verwendeten .htaccess-Dateien, in denen spezielle Verhaltensweisen für jedes Web-Verzeichnis festgelegt werden können. Dadurch ist es beispielsweise möglich, mit wenigen Befehlen einen Passwortschutz anzulegen, Anfragen von einzelnen Pfaden umzuleiten oder Berechtigungen einzuschränken beziehungsweise zu erweitern. Nginx arbeitet nicht mit der .htaccess-Datei oder anderen lokalen Konfigurationen. Sämtliche Anweisungen müssen direkt in der Konfigurationsdatei definiert werden.

Vor- und Nachteile der beiden Webserver

Jedes Konzept besitzt seine eigenen ganz spezifischen Vor- und Nachteile. Apache zeigt dabei seine Stärke in der sehr hohen Flexibilität, während Nginx mit einer extrem guten Performance überzeugen kann. Die vielen einzelnen Prozesse bei Apache belasten sowohl die CPU als auch den RAM Speicher. Es müssen deshalb stets ausreichend Ressourcen vorgehalten werden, um bei Spitzenbelastung durch multiple Verbindungen die Performance zu erhalten. Auf Nginx laufen stets eine nahezu gleiche Anzahl an Prozessen. So entsteht eine sehr stabile Auslastung, die selbst unter extremer Belastung kaum Einbrüche der Geschwindigkeit hervorruft. Darüber hinaus ist es durch sein Design in der Lage, Anfragen sehr viel schneller zu verarbeiten. Um die lokalen Konfigurationen zu verarbeiten, muss sich Apache bei jeder Anfrage durch die gesamte hierarchische Verzeichnisstruktur arbeiten und nach .htaccess oder .htpasswd fragen. Diese große Menge an Lesezugriffen führt insbesondere bei komplexen Strukturen zu entsprechend langen Zugriffszeiten und minderer Performance. Nginx greift demgegenüber exakt auf das angeforderte Verzeichnis zurück und fragt die hierarchische Ordnung nicht einzeln ab. Das ist wesentlich effizienter und reduziert Datenzugriffe und den Transfer auf ein Minimum.

Bei Apache können Module dynamisch ein- und ausgeschaltet oder installiert und deinstalliert werden. Aufgaben wie Logging, Interpretation von Skripten, Verschlüsselung oder Kompression können auf diese Weise einfach implementiert werden. Nginx kennt zwar ebenfalls Module, diese müssen allerdings bereits bei der Kompilierung explizit in das Hauptprogramm eingebettet werden. Die so vorkompilierten Pakete enthalten zwar die gebräuchlichen Module, aber für eine minimale Installation oder die Verwendung von seltenen Extras muss der Webserver jedoch im Quellcode selbst eingerichtet werden.

In der Sicherheit bietet Apache den Vorteil, einzelne Unterverzeichnis direkt schützen zu können. Ein unerfahrener User mit entsprechenden Rechten kann nun aber leicht durch eine fehlerhafte Konfiguration, die eigene Sicherheit oder sogar den gesamten Server außer Gefecht setzen. Bei Nginx bleibt die IT-Security ausschließlich in der Hand des Administrators und kann nicht durch andere Nutzer beeinträchtigt werden.

Unterschiedliche Server für verschiedene Umgebungen

Bei der Auswahl des geeigneten Webservers, Apache oder Nginx, müssen viele Faktoren berücksichtigt werden. Besonderes Augenmerk sollten Sie auf die zu erwartende Auslastung, die Flexibilität in der Handhabung, eventuelle Unterschiede zwischen Minimal- und Maximalauslastung und die Performance der Hardware selbst legen. Für einfache Webserver, die nur selten Anpassungen erfordern und für Infrastruktur mit eingeschränkter Hardware bietet Nginx große Vorteile. Für Webserver, auf denen sich die Konfiguration häufig ändert oder bei denen Nutzer spezielle Ansprüche haben – etwa beim Webhosting oder in experimentellen Umgebungen – werden Sie die Flexibilität von Apache zu schätzen wissen.

Letztendlich gibt es auch die Möglichkeit, beide Server miteinander zu kombinieren. Beispielsweise kann Nginx über seine Proxy-Schnittstelle so konfiguriert werden, dass es statische Anfragen selbst übernimmt und dynamische an Apache weiterleitet. Auf diese Weise können Vorteile beider Systeme miteinander verbunden werden, um für jedes Szenario die optimale Struktur zu schaffen.

Sie möchten einen Apache oder Nginx Webserver einrichten? Sie benötigen Hilfe bei der Auswahl eines Webservers für Ihr Webprojekt? Sprechen Sie uns an. Wir bei mindtwo beraten Sie gerne.