Logo

Apache- und Nginx-Server: Das Wichtigste über diese beiden Servertypen

Kategorie:
Erstellt am: 16. Januar

Das Internet basiert auf einer Reihe von Servern. Diese haben jedoch einen anderen Aufbau als ein Standard-Desktop-Rechner. Ein versierter Systemadministrator oder Backend-Entwickler wird diese Auswahl auf seine Bedürfnisse hin optimieren. Dies geschieht in erster Linie durch die Wahl der Serversoftware. Ein beliebter Vergleich in diesem Bereich ist Apache gegen Nginx.

Dafür gibt es eine Reihe von Gründen, aber die Nutzungszahlen und die Langlebigkeit sind zwei der wichtigsten. Nginx ist neuer und wohl fähiger für moderne Webstandards. Aber auch der Apache macht keine halben Sachen und ist genauso gut in der Lage, Websites für Millionen von Nutzern weltweit bereitzustellen.

In diesem Beitrag werden wir einen Vergleich zwischen Apache und Nginx anstellen. Wir werden uns oberflächliche Elemente wie die Beliebtheit beider Servertypen ansehen. Wir werden aber auch auf die technischen Merkmale und Überlegungen für beide eingehen. Am Ende werden Sie die Vor- und Nachteile beider Softwaretypen kennen und wissen, welcher für Ihren Server am besten geeignet ist.

Was sind Apache und Nginx?

Wenn Sie diesen Artikel lesen, wissen Sie wahrscheinlich, dass ein Webserver spezielle Software benötigt, um optimale Leistung zu erbringen. In diesem Artikel wird zwar nicht behandelt, was Serversoftware im Allgemeinen ist oder tut, aber wir werden zwei der führenden Lösungen für Ihren Server vorstellen:

  • Apache. Hierbei handelt es sich um freie und quelloffene Software, die auf den meisten Linux-"Distros" vorinstalliert ist. Es gibt sie seit 1995, und aufgrund dieser beiden Faktoren hat sie eine nahezu führende Position auf dem Markt.
  • Nginx. Obwohl Nginx im Vergleich zu anderer Serversoftware ein relatives Baby ist, hat es viele Benutzer. Zum Zeitpunkt der Erstellung dieses Artikels liegt es fast gleichauf mit Apache an erster Stelle der beliebtesten Serversoftware (dazu später mehr).

Es ist erwähnenswert, dass Apache seit Jahrzehnten die führende Serversoftware ist und in dieser Zeit einen großen Marktanteil hatte. Allerdings ist Nginx jetzt der Spitzenreiter, wenn auch nicht mit großem Abstand.

CAPTION: Die blaue Linie von Google Trends zeigt die Suchanfragen für Apache seit 2004, während die rote Linie sich auf Nginx bezieht.

Über die Vorteile von Apache und Nginx könnte man mehrere Bücher zu diesem Thema schreiben. Wir werden jedoch versuchen, dies in weniger als 2.000 Wörtern zu tun - beginnend mit dem allgemeinen Funktionsumfang beider Systeme.

Die allgemeinen Merkmale von Apache und Nginx

Da es sich bei Apache und Nginx um HTTP-Webserver-Software handelt, gibt es eine Reihe von Gemeinsamkeiten. Zum Beispiel sind beide Open-Source-Software, was bedeutet, dass sie auf einer Vielzahl von Systemen funktionieren. Darüber hinaus sind beide flexibel und erweiterbar, aber jeder Servertyp verfolgt andere Ziele.

Die Gegenüberstellung von Apache und Nginx ist jedoch kein echter Vergleich, da beide Softwareprodukte die Konfiguration eines Webservers auf unterschiedliche Weise angehen. In Wirklichkeit eignen sich beide besser für unterschiedliche Anwendungen.

Im weiteren Verlauf dieses Artikels werden wir Ihnen dies anhand einer Aufschlüsselung der technischen Details von Apache und Nginx zeigen. Hier ist, was wir behandeln werden:

Das scheint nicht viel zu sein, aber man kann jeden dieser Punkte in eine Reihe weiterer Unterabschnitte aufteilen. Wir werden genau das tun und mit den technischen Unterschieden beginnen.

Die technischen Unterschiede zwischen Apache und Nginx

Im Allgemeinen gehen Apache und Nginx fast einzigartige und exklusive Wege, um das gleiche Ziel eines optimalen Webservers zu erreichen. Wenn Sie die beiden Systeme im Großen und Ganzen vergleichen, werden Sie sehen, wie unterschiedlich sie sind:

  1. Apache verwendet eine "prozessgesteuerte" Architektur, während Nginx eine "ereignisgesteuerte" verwendet.
  2. Während beide Arten von Servern statische Dateien speichern (wenn auch auf unterschiedliche Weise), speichert Nginx keine dynamischen Inhalte.
  3. Jeder Softwaretyp interpretiert HTTP-Anfragen auf eine andere Art und Weise.

Wir werden uns einige dieser Aspekte ansehen, beginnend mit Überlegungen zur Verbindungsbehandlung.

Handhabung von Verbindungen

Im Vergleich zwischen Apache und Nginx ist es von großer Bedeutung, wie die einzelnen Typen Verbindungen und Anfragen behandeln. Der Apache verwendet beispielsweise einen prozessgesteuerten Ansatz, bei dem für jeden Thread eine neue Anfrage mithilfe eines Verarbeitungsmoduls namens mpm_prefork erstellt wird. Dies kann schnell sein, wenn die Anzahl der Anfragen geringer ist als die Anzahl der Prozesse, aber danach gibt es einen Leistungseinbruch.

In der Tat bietet der Apache viel Flexibilität, um einen Algorithmus zur Verbindungsbearbeitung zu erstellen, der Ihren Bedürfnissen entspricht, indem Sie die Module mpm_prefork, mpm_worker und mpm_event verwenden. Im Gegensatz dazu ist das Design von Nginx so angelegt, dass es versucht, die negativen Leistungsaspekte des Apache zu mildern.

Dies geschieht durch die Art und Weise, wie es Worker-Prozesse auf einer ereignisgesteuerten Basis erzeugt. Das bedeutet, dass Nginx hervorragend für die Skalierung geeignet ist, da es mehrere Anfragen innerhalb eines einzigen Threads verwalten kann.

Interpretation von Anfragen

Sowohl Apache als auch Nginx verfolgen einen unterschiedlichen Ansatz bei der Interpretation der Anfragen, die ein Server erhält. So verwendet Nginx beispielsweise den Uniform Resource Identifier (URI) einer Anfrage, um sie in ein physisches Element des Dateisystems zu übersetzen.

Sie können dies im Format einiger Konfigurationsblöcke sehen, wie Server und Standort. Sie arbeiten zusammen, um einen URI zu analysieren und ihn in ein Element des Dateisystems umzuwandeln.

Server {
listen 80;
server_name example.org www.example.org;
root /data/www;

Standort / {
index index.html index.php;
}

location ~* .(gif|jpg|png)$ {
läuft 30d ab;
}

location ~ .php$ {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME
$document_root€fastcgi_script_name;
include fastcgi_params;
}
}

Im Gegensatz dazu geht der Apache aufgrund seiner Wurzeln als "reine" Webserver-Software davon aus, dass es sich bei jeder Anfrage um eine Ressource im Dateisystem handelt, und agiert auf dieser Grundlage. Der Apache kann jedoch auch mit URIs arbeiten, bei denen die Anfrage abstrakter ist. Trotzdem warnt die Dokumentation davor, etwas anderes als die dateibasierte Methode zu verwenden.

Statische vs. dynamische Leistung

Wenn es um Leistung geht, ist Apache vs. Nginx eine wichtige Überlegung für fast jeden Benutzer. In diesem Zusammenhang läuft der Vergleich darauf hinaus, wie jeder Softwaretyp statische und dynamische Inhalte bedient.

Da die Architektur des Apache direkt mit dem Dateisystem arbeitet, eignet er sich hervorragend für die Bereitstellung statischer Inhalte. Er verarbeitet jedoch auch dynamische Inhalte innerhalb des Servers, was eine ähnliche Implementierung darstellt, die auch flexibel ist, wenn Sie Module je nach Ihren Anforderungen auswechseln müssen.

Im Vergleich dazu verarbeitet Nginx überhaupt keine dynamischen Inhalte. Es ist komplizierter, weil Nginx diese Anfragen an einen externen Worker oder ein Protokoll weiterleiten muss. Dennoch werden Sie feststellen, dass es weniger Performance-Overhead gibt und dass Nginx andere Protokolle mit größerer Anpassungsfähigkeit nutzen kann.

Für statische Inhalte kann dies genauso einfach sein wie bei Apache, und in einigen Fällen sogar eine leistungsfähigere Option. Das liegt daran, dass Nginx den Interpreter bei Bedarf kontaktieren kann, anstatt dass er ein fester Bestandteil der Gesamtleistung der Serversoftware ist.

Das verteilte Konfigurationsmodell des Apache

Es wird Sie nicht überraschen, dass Apache und Nginx beide einen unterschiedlichen Ansatz für die Serverkonfiguration haben. Kurz gesagt, die Konfiguration von Apache und Nginx hängt davon ab, ob Sie dies auf Verzeichnisebene tun können.

Apache verwendet ein verteiltes Modell, d. h. Sie können den Server auf Verzeichnisebene konfigurieren. Dies geschieht über .htaccess-Dateien. Der Apache prüft jede Komponente des angeforderten Dateipfads auf eine .htaccess-Datei und führt die darin enthaltenen Anweisungen aus.

Unserer Meinung nach ist eine .htaccess-Datei viel flexibler als jedes andere System. Sie ist schnell zu finden, zu öffnen und zu bearbeiten. Sie haben die Möglichkeit, eine Vielzahl leistungsstarker Aktionen durchzuführen. Sie werden auch feststellen, dass ein Apache-Server eine .htaccess-Datei verarbeitet, sobald er eine entdeckt, ohne dass der Server neu geladen werden muss.

Es ist auch fantastisch, wenn Sie einigen Benutzern die Kontrolle über Aspekte ihrer Sites überlassen wollen, ohne die gesamte Serverkonfiguration zu beeinflussen. Aus diesem Grund sind Apache-Server zusammen mit ihrem flexiblen Modulsystem eine der Hauptstützen von Shared-Hosting-Plattformen.

Die Module des Apache

Mit Apache können Sie Module dynamisch laden und entladen. Dies ist vergleichbar mit der Verwendung von Plugins und Themes in WordPress: Die Apache-Kernfunktionalität führt die grundlegenden Schritte aus, während die aktiven Module Ihnen helfen, ein einzigartiges Erlebnis zu schaffen.

Diese Module können eine ganze Menge abdecken, und es gibt viele davon. Module wie mod_php können die Kernfunktionalität des Servers verändern, während das beliebte mod_rewrite viele andere Aufgaben übernehmen kann:

Mit .htaccess und dem dynamischen Modulsystem stellt der Apache für die meisten Benutzer eine klare Möglichkeit dar, einen Webserver und eine Website zu basteln und zu optimieren.

Das zentralisierte Konfigurationsmodell von Nginx

Nginx verfolgt einen zentralisierten Ansatz für die Serverkonfiguration. Das bedeutet, dass es eine einzige Konfigurationsdatei gibt (mit der Endung .conf). Abhängig von der Struktur Ihres Servers ist sie manchmal schwer zu finden.

Für einen angehenden Website-Besitzer, der Änderungen an einem Server vornehmen möchte, hat dies einige klare Nachteile. Bei Websites, die gemeinsam gehostet werden, ist es fast unmöglich, den Server zu konfigurieren. Es gibt auch viel weniger Flexibilität.

Es gibt jedoch auch einige Vorteile, die mit der Leistung zusammenhängen. Da Nginx nur einen Speicherort für eine Konfigurationsdatei hat, während Apache potenziell mehrere Speicherorte verwenden könnte, gibt es nur einen Suchvorgang. Dadurch wird auch die Leistung beim Auffinden der Konfigurationsdatei weniger beeinträchtigt.

Da die Konfiguration zentral ist, müssen sich die Site-Besitzer auch nicht um sicherheitsrelevante Aspekte kümmern. Dies ist ein weiterer Vorteil des Nginx-Ansatzes, da die Verantwortung für die Sicherheit nur auf den Schultern des Systemadministrators liegt.

Die Module von Nginx

Man kann mit Fug und Recht behaupten, dass das Modulsystem von Nginx bei weitem nicht so freizügig und flexibel ist wie das des Apache, obwohl es die gleiche Art von Funktionalität bietet. Nehmen Sie zum Beispiel die Umleitungsregeln von Nginx:

Server {
listen 80;
server_name www.olddomain.com;
return 301 $scheme://www.newdomain.com€request_uri;
}

Das liegt daran, dass man sie mit Nginx nicht als dynamische Elemente laden kann. Um auf unsere WordPress-Analogie zurückzukommen, ist das so, als müsste man seine gesamte Website neu installieren, um ein Plugin zu deaktivieren.

Auf den ersten Blick scheint dies nicht praktikabel zu sein und einen massiven Nachteil darzustellen. Was Ihnen jedoch an Flexibilität fehlt, gewinnen Sie an Kernstabilität und Funktionalität. Wenn Sie wissen, was Ihr Server zum Zeitpunkt der Erstellung benötigt, können Sie all diese Komponenten und Module einbinden.

Es gibt auch einen Sicherheitsaspekt zu berücksichtigen. Da Sie keine dynamischen Module in und aus Ihrem System austauschen, wissen Sie, was jedes Element tut und kann. Die Struktur und Architektur Ihres Servers wird dadurch klarer und leichter zu pflegen und auch leistungsfähiger.

Warum Sie entweder Apache oder Nginx verwenden sollten

Zusammenfassend lässt sich sagen, dass die Entscheidung zwischen Apache und Nginx nicht eindeutig ausfällt. Zunächst einmal ist die typische Meinung, Nginx sei leistungsfähiger als Apache, irreführend. Wenn Sie einen Apache-Server gut einrichten, ist er genauso leistungsfähig wie ein entsprechender Nginx-Server.

Apache eignet sich hervorragend, um auf einfache Weise sowohl statische als auch dynamische Inhalte bereitzustellen. Er bietet denjenigen, die neu in der Verwaltung eines Servers sind, eine enorme Leistung und Flexibilität bei der Konfiguration. Im Allgemeinen benötigen Sie für die Konfiguration eines Apache-Servers weniger technische Kenntnisse als für Nginx.

Nginx glänzt jedoch bei der Leistung. Der Aufbau seiner Architektur sorgt dafür, dass er pro Prozessorzyklus mehr leisten kann als ein Apache-Server. Und das trotz geringerer Flexibilität bei der Einrichtung.

In manchen Fällen haben Sie nicht die Wahl zwischen Apache und Nginx, insbesondere wenn Sie einen gemeinsam genutzten Host verwenden. Wenn dies jedoch der Fall ist, hängt die Wahl von Ihren Kenntnissen, Zielen und Bedürfnissen ab.

Zusammenfassung

Die Wahl der Serversoftware ist wichtig, und es stehen Ihnen unzählige Optionen zur Verfügung. In der Realität werden Sie nicht einfach einen Servertyp aus dem Stegreif wählen. Stattdessen werden Sie oft aus zwei oder drei Typen wählen. Apache vs. Nginx ist ein viel beachteter Vergleich, da beide eine hervorragende, langfristige Leistung und Zuverlässigkeit bieten.

In diesem Artikel wird untersucht, wie sich Apache und Nginx in diesen beiden Aspekten und darüber hinaus unterscheiden. Es gibt eine ganze Reihe von technischen Erwägungen, die Sie berücksichtigen müssen und die bei Ihrer Wahl eine größere Rolle spielen werden als die Beliebtheit einer bestimmten Serversoftware in der Community.

Haben Sie eine Meinung zu Apache vs. Nginx? Teilen Sie uns Ihre Gedanken in den Kommentaren unten mit!

Verwandte Beiträge

Copyright © 2022 webmousedesign.de
crossmenu