GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Apache vs. Nginx:Welchen Webserver sollten Sie wählen?

Apache vs. Nginx ist ein wohlverdientes Thema. Wenn Sie sich nicht sicher sind, welcher Server die bessere Lösung für Sie ist, finden wir die Antwort in diesem Artikel.

Apache und Nginx sind die beliebtesten Webserver, die heute das Internet antreiben. Zusammen sind sie für über 50 % des Datenverkehrs im Internet verantwortlich. Aber Apache hat in den letzten Jahren einen Rückgang zugunsten von Nginx erlebt. Auf hoher Ebene machen beide Plattformen dasselbe Kerngeschäft:Webinhalte hosten und bereitstellen. Beide verfügen über einzigartige Fähigkeiten, die auf bestimmte Rechenanforderungen zugeschnitten sind, wodurch einer in verschiedenen Szenarien besser geeignet ist als der andere.

Apache:Ein funktionsreicher Webserver

Apache ist eine modulare, prozessgesteuerte Webserveranwendung, die bei jeder gleichzeitigen Verbindung einen neuen Thread erstellt. Es unterstützt eine Reihe von Funktionen. Viele von ihnen sind als separate Module kompiliert und erweitern ihre Kernfunktionalität. Die Module von Apache können alles bieten, von der Unterstützung der serverseitigen Programmiersprache bis hin zum Authentifizierungsmechanismus.

Der Apache-Webserver ist eine modulare Anwendung wo der Administrator die erforderliche Funktionalität auswählen und verschiedene Module entsprechend der spezifischen erforderlichen Funktionalität installieren kann. Alle Module können als Dynamic Shared Objects kompiliert werden (DSO), die separat von der Apache-Hauptdatei existiert. Der DSO-Ansatz wird dringend empfohlen, da er die Aufgabe des Hinzufügens/Entfernens/Aktualisierens von Modulen aus der Serverkonfiguration sehr einfach macht.

Ein weiteres wesentliches Merkmal der Architektur von Apache sind Filter , die es Modulen ermöglichen, mit den von anderen Modulen erstellten Inhalten zu interagieren. Diese Interaktion umfasst Verschlüsselung, Virenscans und Komprimierung sowohl statischer als auch dynamischer Inhalte.

Apache wird oft von Administratoren wegen seiner Flexibilität, Leistungsfähigkeit und weit verbreiteten Unterstützung ausgewählt.

Nginx:Entwickelt für Leistung und Skalierbarkeit

Nginx wurde von einem russischen Softwareentwickler namens Igor Sysoev als Antwort auf ein Problem entwickelt, das als C10K bekannt ist – die Verarbeitung von 10.000 gleichzeitigen Clientverbindungen zu Clients. Es wurde speziell geschrieben, um die Leistungsbeschränkungen von Apache-Webservern zu beheben. Der Server wurde erstmals 2002 als Skalierungstool für die Website rambler.ru erstellt.

NGINX ist ein leistungsstarker asynchroner Webserver. Es verwendet eine ereignisgesteuerte Architektur, um große Mengen an Verbindungen zu verarbeiten. Es ist jetzt beliebter als Apache Web Server, aus verschiedenen Gründen, die wir in diesem Artikel sehen werden.

Nginx wurde hauptsächlich zum Bereitstellen statischer Dateien verwendet, aber heute hat es sich zu einem vollständigen Webserver entwickelt, der das gesamte Spektrum an Serveraufgaben abdeckt. Heute wird Nginx auch als Reverse-Proxy, Load Balancer und für das HTTP-Caching verwendet. In einigen Anwendungsfällen dient Nginx auch als Webbeschleuniger oder SSL/TLS-Terminator.

Nginx wird oft von Administratoren wegen seiner Ressourceneffizienz und Reaktionsfähigkeit unter Last ausgewählt.

Apache versus Nginx:Detaillierter Vergleich

Architektur

Im Fall von Apache versus Nginx gibt es einen wesentlichen Unterschied zwischen den Architekturen der beiden Webserver, auf denen sie betrieben werden.

Der Hauptunterschied zwischen Apache und Nginx besteht vor allem darin, wie sie mit der Client-Anfrage umgehen. Apache verwendet einen prozessgesteuerten Ansatz und erstellt für jede Anfrage einen neuen Thread. Während NGINX eine ereignisgesteuerte Architektur verwendet, um mehrere Anfragen innerhalb eines Threads zu verarbeiten.

In Apache ist ein einzelner Thread nur einer Verbindung zugeordnet, während ein einzelner Thread in Nginx mehrere Verbindungen verarbeiten kann. Alle Prozesse werden zusammen mit anderen Verbindungen in eine Ereignisschleife gestellt und asynchron verwaltet. Dieser Prozess verbraucht weniger Speicher und erhöht dadurch die Leistung.

Da der Speicherverbrauch von Nginx geringer ist, kann es außerdem tendenziell mehr Verbindungen gleichzeitig verarbeiten, ohne den Hostserver zu überlasten. Wenn Apache mit großen Mengen an Anfragen konfrontiert wird, kann es dazu führen, dass der gesamte Systemspeicher verbraucht wird und Daten im Swap gespeichert werden müssen, was die Leistung erheblich verlangsamt.

Leistung:Statischer / Dynamischer Inhalt

Die Leistung eines Webservers wird hauptsächlich anhand von zwei Parametern beurteilt, nämlich seiner Fähigkeit, sowohl statische als auch dynamische Inhalte zu verarbeiten.

Statische Dateien erfordern keine Verarbeitung und sind daher nützlich, um die Antwortzeiten der Server zu messen. Wie schnell kann also jeder Server kleine statische Dateien bereitstellen? Wenn es um statische Inhalte geht, glänzt Nginx hier, da die Dateien dem Client direkt und schnell bereitgestellt werden können. Nginx ist laut einem Benchmark-Test mit bis zu 1.000 gleichzeitigen Verbindungen 2,5-mal schneller als Apache. Gleichzeitig ist der RAM-Verbrauch geringer. Um die Last zu bewältigen, verbrauchte Nginx 5–6 % weniger Systemspeicher. Der Unterschied ergibt sich hauptsächlich aus der Serverarchitektur.

Für die Anzeige dynamischer Inhalte zeigten die Testergebnisse, dass die Leistung von Apache und Nginx für beide genau gleich war.

Nginx hat keine Fähigkeit, dynamische Inhalte nativ zu verarbeiten. Es ist nicht für die native Verarbeitung dynamischer Inhalte ausgelegt. Nginx muss an einen externen Prozessor übergeben werden, um PHP- und andere Anforderungen für dynamische Inhalte zu verarbeiten. Dies kann die Dinge etwas verkomplizieren, insbesondere wenn Sie versuchen, die Anzahl der zuzulassenden Verbindungen vorherzusehen.

Im Gegensatz zu Ngnix kann Apache dynamische Inhalte verarbeiten, indem es einen Prozessor einer Sprache wie PHP in jede seiner Worker-Instanzen einbettet. Dadurch kann es dynamische Inhalte innerhalb des Webservers selbst ausführen, ohne auf externe Komponenten angewiesen zu sein.

Anpassung

Apache bietet dynamisch geladene Module die genutzt werden können, wann immer sie benötigt werden. Der Server unterstützt viele verschiedene Module, sowohl offizielle als auch Drittanbieter. Dies macht Apache zu einer sehr anpassbaren Plattform, die Benutzer an ihre Bedürfnisse anpassen können. Die Module können zum Umschreiben von URLs, Authentifizieren von Clients, Protokollieren, Caching, Härten des Servers, Komprimieren, Verschlüsseln und mehr verwendet werden. Dynamische Module können die Kernfunktionalität ohne großen Mehraufwand erheblich erweitern.

Nginx-Module müssen in den Kern integriert werden und können nicht dynamisch geladen werden. Um nicht standardmäßige Module einzubinden, müssen Benutzer ihren Server aus der Quelle kompilieren.

Das Fehlen dieser Funktion im Nginx-Webserver macht Apache in dieser Hinsicht flexibler.

Konfiguration

Zusätzlich zur Hauptkonfigurationsdatei ermöglicht Apache eine zusätzliche Konfiguration pro Verzeichnis über .htaccess Dateien. Änderungen in .htaccess Dateien werden sofort auf das System angewendet. Diese Dateien enthalten alles von Umleitungsregeln bis hin zu Speicherbegrenzungen und vieles mehr und ermöglichen effektiv eine dezentrale Konfiguration des Webservers. Darüber hinaus ermöglicht diese Architektur nicht privilegierten Benutzern, bestimmte Aspekte ihrer Website zu steuern, ohne ihnen die Berechtigung zu erteilen, die Hauptkonfiguration zu bearbeiten.

Diese Flexibilität geht allerdings zu Lasten der Performance. Jedes Mal .htaccess Dateien aktiviert sind, muss Apache den gesamten Verzeichnisbaum von der angeforderten URL oder Datei über alle höheren Ebenen bis zum Stammverzeichnis des Servers durchlaufen und sie dann für jede einzelne Anforderung laden.

Nginx erlaubt keine zusätzliche Konfiguration. Seine Konfiguration ist zentralisiert. Sie haben eine einzige Datei, die den gesamten Prozess regelt, was ihn in dieser Hinsicht viel schneller macht, wenn auch viel weniger flexibel. Die zentrale Konfiguration von Nginx ist weniger flexibel als das vom Apache verwendete Konzept, bietet aber einen klaren Sicherheitsvorteil:Änderungen an der Konfiguration des Webservers können nur von Benutzern mit Root-Rechten vorgenommen werden.

Da es in Nginx keine Konfiguration auf Verzeichnisebene gibt, nehmen Benutzer alle Konfigurationsänderungen vor, indem sie Anweisungen in die Hauptkonfigurationsdatei schreiben.

Unterstützung

Apache und Nginx sind beide sehr gut dokumentierte Plattformen. Es ist sehr unwahrscheinlich, dass Administratoren jemals auf ein Problem stoßen oder eine Frage haben, deren Antwort nicht in ihrer Dokumentation zu finden ist.

  • Apache HTTP Server-Dokumentation
  • Nginx-Dokumentation

In Bezug auf die Betriebssystemunterstützung läuft Apache auf allen Betriebssystemen wie Linux und UNIX und bietet volle Unterstützung für Microsoft Windows. Nginx läuft auch auf mehreren modernen Unix-ähnlichen Systemen und unterstützt Windows, aber seine Leistung unter Windows ist nicht so stabil wie die auf UNIX-Plattformen. Wenn Sie also einen funktionsreichen Open-Source-Webserver unter Microsoft Windows ausführen möchten, ist Apache wirklich die einzige produktionsbereite Option.

Apache und Nginx zusammen verwenden

Beim Vergleich von Apache mit Nginx ist jedoch zu beachten, dass es nicht immer eine Entweder-Oder-Entscheidung sein muss. Viele Administratoren kombinieren die beiden in einer Hybridlösung, die die Stärken jedes einzelnen nutzt.

Apache und Nginx können nebeneinander verwendet werden, um einen Workload-optimierten Server zu erstellen. Sie können Nginx vor Apache als Server-Proxy verwenden, wodurch die Verarbeitungsgeschwindigkeit von Nginx und die Fähigkeit zur Bewältigung großer Verkehrsaufkommen genutzt werden. Nginx verarbeitet statische Inhalte und stellt sie bereit, während dynamische Inhalte an Apache weitergeleitet werden (wie im Bild unten gezeigt).

Nginx übernimmt das HTTP-bezogene Heavy Lifting – das Bereitstellen statischer Dateien, das Zwischenspeichern von Inhalten und das Auslagern langsamer HTTP-Verbindungen, sodass der Apache-Server den Anwendungscode in einer sicheren Umgebung ausführen kann.

Fazit

Beim Apache-gegen-Nginx-Wettbewerb kann die Entscheidung schwierig sein, wenn es darum geht, Server oder Serversoftware zu wechseln. Die Entscheidung, welcher Server für Sie am besten geeignet ist, hängt weitgehend von der Bewertung Ihrer spezifischen Anforderungen und der Entscheidung für die beste Option ab. Sowohl Apache als auch Nginx sind Open-Source-Hochleistungs-Webserver, die in der Lage sind, verschiedene Workloads zu bewältigen, um die Anforderungen moderner Webanforderungen zu erfüllen.

Wenn Sie nicht viele Webserverfunktionen benötigen, ist Nginx der richtige Weg. Darüber hinaus ist Nginx auch in Bezug auf Geschwindigkeit und Leistung der klare Gewinner. Es eignet sich hervorragend für stark frequentierte Websites.

Nginx kann an vielen Fronten nicht mit dem funktionsreichen Apache konkurrieren, aber sein asynchroner Status und seine blitzschnelle Single-Thread-Architektur machen es zu einer klugen Wahl gegenüber Apache.

Andererseits kann Apache in anderen Szenarien der bevorzugte Webserver sein. Apache eignet sich besser für gemeinsam genutzte Hosting-Umgebungen und kann ein Bedienfeld bereitstellen, das es einfacher macht, serverseitige Änderungen vorzunehmen.

Bevor Sie sich also zwischen Apache und Nginx entscheiden, müssen Sie Ihre Anforderungen, die Ihr Webserver erfüllen soll, sorgfältig analysieren.


Linux
  1. So konfigurieren Sie einen Apache-Webserver

  2. Optimieren von Apache Web Server Keepalive

  3. So installieren Sie den Nginx-Webserver unter Linux

  4. LAMP vs. LEMP – Tipps zur Auswahl von Apache oder Nginx für Ihren Webserver

  5. Pop!_OS vs. Ubuntu Linux:Was sollten Sie wählen? Hier ist der Grund

So hosten Sie eine Website auf dem NGINX-Webserver

Die 20 wichtigsten Gründe, warum Sie sich für einen Linux-Server entscheiden sollten

20 wichtige Dinge, die Sie wissen sollten, wenn Sie sich auf einem Nginx-Webserver befinden

Apache vs. Nginx:Welcher Webserver ist der beste für Sie?

So fügen Sie PHP-FPM-Unterstützung auf Apache und Nginx-Webserver auf Ubuntu 18.04 hinzu

Soll ich Linux Server oder Windows wählen?