Apache oder Nginx – Die populären Webserver im Vergleich

08. November 2017

Veröffentlicht in:

Webentwicklung

Apache oder Nginx – Die populären Webserver im Vergleich

Lange Zeit galt Apache als der Webserver schlechthin und lief fast ausnahmslos auf allen Servern. Komfortabel in der Administration, vergleichsweise gute 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. 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 1.000 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 URL's während der Verarbeitung umschreiben oder auf spezielle Pfade des Dateisystems umlenken lassen. Das können aber auch Skriptsprachen wie PHP sein. Ganz anders arbeitet der Nginx Webserver: Hier steht die Performance im Vordergrund. Abweichend vom Konzept, das der Apache Webserver verfolgt, ist Nginx darauf ausgelegt, statische Webseiten in HTML-Code auszuliefern. Dynamische Anfragen werden nicht von dem Programm verarbeitet, sondern über eine Proxy-Schnittstelle an eine entsprechende Software übergeben. Zwar ist auch Nginx modular aufgebaut und lässt sich erweitern, anders als beim Apache, der Module dynamisch einbindet, müssen die Module bei Nginx direkt in das System kompiliert werden.

Auch in der Art, wie Verbindungen gehandhabt werden, unterscheiden sich beide Webserver 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. Auf diese Weise können mit jedem Prozess viele tausend Verbindungen behandelt werden. Das wirkt sich besonders positiv auf den Ressourcenverbrauch aus. Dieser bleibt auch unter Hochlast relativ konstant, wodurch auch mit weniger guter Server-Hardware, schnelle und performante Websites und Online-Anwendungen ausgeliefert werden können.

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 oder 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ärken 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 teils massiv. Es müssen deshalb stets ausreichend Ressourcen vorgehalten werden, um bei Spitzenbelastung durch multiple Verbindungen die Performance aufrecht zu erhalten. Auf Nginx laufen stets eine nahezu gleiche Anzahl an Prozessen. So entsteht eine sehr stabile Auslastung, die selbst unter extremer Belastung kaum Einbußen bei der Geschwindigkeit hervorruft. Darüber hinaus ist Nginx durch sein Programm-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 Features muss der Webserver jedoch entsprechend angepasst 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 Anfragem an Apache weiterleitet. Auf diese Weise können die 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 beraten Sie sehr gerne zu den Webservern Apache/Nginx.

Können wir weiterhelfen?

Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!

Kostenloses Erstgespräch