Apache vs. Nginx: Welcher Webserver ist die bessere Wahl?

0
125

Nginx und Apache bedienen zusammen über 50 % des Webs. Aber Apache hat in den letzten Jahren einen Rückgang zugunsten von Nginx erlebt. Ist Nginx wirklich besser und hat die Verwendung von Apache irgendwelche Vorteile?

Nginx ist neuer und schneller

Nginx ist viel leichter als Apache. Dies ist ein Problem, das im Design verwurzelt ist. Unter der Haube muss Apache für jede Verbindung einen neuen Prozess-Thread erstellen. Und obwohl es 10 Threads mit einer vergleichbaren Geschwindigkeit wie Nginx verarbeiten kann, übernimmt Nginx bei der Skalierung auf Hunderte von gleichzeitigen Verbindungen eine entscheidende Führung.

Nginx funktioniert anders und kann mehrere Verbindungen innerhalb eines einzigen Prozessthreads verarbeiten. Es soll auch als einfacher Reverse-Proxy fungieren, also anstatt den Overhead eines vollständigen Webservers mit sich zu bringen, ist es einfach so konzipiert, dass es Datenbytes von einem Ort zum anderen verschiebt. Nginx kann beim Bereitstellen statischer Inhalte mehr als doppelt so schnell sein wie Apache und dabei viel weniger CPU-intensiv sein, was es hervorragend für die Ausführung auf Systemen mit geringer Leistung macht.

Diese Geschwindigkeit spielt jedoch nur beim Bereitstellen eine Rolle statischen Inhalt für viele Benutzer gleichzeitig. Wenn Sie beginnen, dynamische Inhalte bereitzustellen, liegt der Engpass an anderer Stelle, beispielsweise in Ihrer PHP-Engine, Ihrer Webanwendung oder Ihrer Datenbank.

Da Nginx auch ein Reverse-Proxy ist, können Sie ihn vor einem anderen Server (sogar Apache) speziell zum Hosten statischer Inhalte verwenden. Ein nützliches Beispiel sind serverseitige Rendering-Node-Anwendungen, bei denen HTTP-Anforderungen an dynamische Seiten an einen Server mit Express weitergeleitet werden müssen, aber statische Ressourcen (Bilder, Stylesheets usw.) von Nginx bereitgestellt werden können. Der Aufwand hierfür ist minimal und kann statische Inhalte erheblich beschleunigen.

Apache ist besser konfigurierbar

Apache konzentriert sich mehr darauf, ein Webserver zu sein und verfügt über einige nützliche Funktionen wie verzeichnisbasierte Konfigurationsdateien und virtuelle Hosts. Dies macht das Ausführen mehrerer Sites auf demselben Server sehr einfach. Sie können beispielsweise einen VirtualHost-Block wie diesen zu /etc/httpd/conf/httpd.conf hinzufügen:

<VirtualHost 127.0.0.1:80> DocumentRoot /var/www/html Servername www.firstsite.com </VirtualHost> Werbung

Dadurch leitet Apache alle Anfragen an www.firstsite.com an einen bestimmten Ordner weiter, der unabhängig von anderen auf dem Server ausgeführten Websites eigene Einstellungen haben kann. Dies kann mit .htaccess-Dateien weiter ergänzt werden, die die Serverkonfiguration für einen bestimmten Ordner überschreiben können. Das Ausführen von Websites mit .htaccess-Dateien ist jedoch langsamer als die Verwendung einer globalen Konfiguration und wird nur in Fällen empfohlen, in denen Sie anderen Benutzern erlauben möchten, die Servereinstellungen für ein Verzeichnis zu ändern, ohne die globale Konfiguration zu berühren (gemeinsames Hosting ist das Hauptbeispiel dafür .) ).

Nginx kann auch mehrere Domains von einem einzigen Server aus bedienen und sie in ihre eigenen Ordner weiterleiten, aber es ist einfach nicht so konfigurierbar, insbesondere mit einem Mangel an ähnlicher Funktionalität wie .htaccess. Wenn Sie diese Art von Funktionalität jedoch wirklich benötigen, können Sie Nginx als Reverse-Proxy verwenden, um auf Inhalte zuzugreifen, die an anderer Stelle bereitgestellt werden, sogar auf einer anderen Instanz von Nginx oder mehreren Docker-Containern.

Apache hat auch eine viel bessere Plugin-Unterstützung in Form von Modulen, die dynamisch geladen werden können, ohne den Server neu zu starten. Nginx unterstützt auch Module, aber das Laden von Modulen wurde erst kürzlich hinzugefügt, sodass Sie bei vielen Modulen immer noch die Binärdatei patchen müssen.

Welchen Server sollten Sie wählen?

Trotz der Mängel sind sie beide anständige Webserver. Sie sind sowohl kostenlos als auch Open Source, obwohl Nginx eine kostenpflichtige Version namens Nginx Plus hat, die einen Software-Load-Balancer über Open-Source-Nginx hinzufügt. Beide Server sind sicher, verfügen über gute Support-Communitys und sind einfach zu konfigurieren. Während Nginx an Geschwindigkeit gewinnt, sind beide beim Bereitstellen dynamischer Inhalte vergleichbar.

Wenn Sie sich nicht sicher sind, welche Sie verwenden sollen, entscheiden Sie sich für Nginx. Im Allgemeinen ist Nginx aufgrund seiner Geschwindigkeit und Benutzerfreundlichkeit eine gute Wahl, wenn Sie ein Unix-System verwenden. Wenn Sie mehr Konfiguration benötigen, insbesondere wenn Sie viele Websites auf demselben Server ausführen, funktioniert Apache möglicherweise besser.

Werbung

Beachten Sie Folgendes: Verwendung von PHP ist das Setup für Nginx etwas anders. Apache führt PHP nativ im gleichen Prozess aus und kommuniziert direkt mit der PHP-Engine. Nginx führt es in einem separaten Prozess (PHP-FPM) aus und kommuniziert damit wie ein Reverse-Proxy. Beide Methoden sind genauso schnell, aber Ihre Konfiguration wird variieren.

Nginx und Apache unterstützen beide vollständig jedes Unix-System, einschließlich FreeBSD. Während Nginx technisch gesehen eine Version hat, die unter Windows läuft, ist es nicht die beste. Apache wird unter Windows vollständig unterstützt und ist daher der Go-to-Webserver auf dieser Plattform.