Apache vs. Nginx-Server: Die Fakten zu diesen beiden Servertypen

Veröffentlicht: 2022-01-03

Das Internet läuft auf einer Sammlung von Servern. Diese haben jedoch ein anderes Setup als eine Standard-Desktop-Maschine. Ein versierter Systemadministrator oder Back-End-Entwickler wird diese Wahl für seine Bedürfnisse optimieren. Der primäre Weg, dies zu tun, ist eine Auswahl an Serversoftware. Ein beliebter Vergleich in diesem Bereich ist Apache vs. Nginx.

Dies hat mehrere Gründe, aber Nutzungszahlen und Langlebigkeit sind zwei wichtige Faktoren. Nginx ist neuer und für moderne Webstandards wohl besser geeignet. Aber auch Apache macht keine Kompromisse und ist ebenso in der Lage, Websites für Millionen von Benutzern weltweit bereitzustellen.

In diesem Beitrag geben wir Ihnen einen Vergleich zwischen Apache und Nginx. Wir werden uns oberflächliche Elemente wie die Popularität beider Servertypen ansehen. Wir werden uns jedoch auch mit den technischen Merkmalen und Überlegungen für jeden befassen. Am Ende kennen Sie die Vor- und Nachteile beider Softwaretypen und wissen, welche für Ihren Server am besten geeignet ist.

Was Apache und Nginx sind

Wenn Sie diesen Artikel lesen, verstehen Sie wahrscheinlich, dass ein Webserver spezielle Software benötigt, um eine optimale Leistung zu erbringen. Während dieses Stück nicht behandelt, was Serversoftware im Allgemeinen ist oder tut, werden wir zwei der führenden Lösungen für Ihren Server behandeln:

  • Apache. Dies ist eine kostenlose Open-Source-Software, die mit den meisten Linux-Distributionen vorinstalliert ist. Es gibt es seit 1995 und hat aufgrund dieser beiden Faktoren eine nahezu führende Position auf dem Markt.
  • Nginx. Obwohl es im Vergleich zu anderer Serversoftware ein relativ kleines Kind ist, hat Nginx viele Benutzer. Beim jetzigen Schreiben ist es fast gemeinsam mit Apache die beliebteste Server-Software (dazu später mehr).

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

Ein Diagramm von Google Trends, das Apache vs. Nginx zeigt.

UNTERSCHRIFT: Die blaue Linie hier von Google Trends stellt Suchen nach Apache seit 2004 dar, während die rote Linie sich auf Nginx bezieht.

Was Apache und Nginx auf den Tisch bringen, könnte mehrere Bücher zu diesem Thema füllen. Wir werden jedoch versuchen, dies in weniger als 2.000 Wörtern zu tun – beginnend mit dem allgemeinen Funktionsumfang beider.

Die allgemeinen Funktionen von Apache und Nginx

Da Apache und Nginx beide HTTP-Webserver-Software sind, werden Sie viele Ähnlichkeiten feststellen. Zum Beispiel sind sie beide Open Source, was bedeutet, dass sie auf einer Vielzahl von Systemen funktionieren. Folglich sind beide flexibel und erweiterbar, aber es gibt unterschiedliche Ziele für jeden Servertyp.

Apache vs. Nginx ist jedoch kein echter Vergleich, da beide Softwareteile den Prozess der Konfiguration eines Webservers auf unterschiedliche Weise angehen. In Wirklichkeit werden beide für unterschiedliche Anwendungen besser geeignet sein.

Im weiteren Verlauf dieses Artikels zeigen wir Ihnen dies durch eine Aufschlüsselung der technischen Details für Apache und Nginx. Folgendes werden wir behandeln:

  • Eine technische Aufschlüsselung jedes Serversoftwaretyps, einschließlich Anforderungs- und Verbindungsverarbeitung, Caching-Technologien und mehr.
  • Konfigurieren und Erweitern von Apache, einschließlich Details zu seiner .htaccess -Datei und seinen Modulen.
  • Wie Sie Nginx konfigurieren und seine Erweiterbarkeit.

Dies scheint nicht viel zu beachten zu sein, aber Sie können jeden in eine Reihe anderer Unterabschnitte entpacken. Wir werden genau das tun, beginnend mit den technischen Unterschieden.

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 sie 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 Typen statische Dateien bereitstellen (wenn auch auf unterschiedliche Weise), stellt Nginx keine dynamischen Inhalte bereit.
  3. Jeder Softwaretyp interpretiert HTTP-Anforderungen auf eine andere Art und Weise.

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

Umgang mit Verbindungen

Sie werden feststellen, dass Apache vs. Nginx großen Wert darauf legt, wie jeder Typ Verbindungen und Anfragen handhabt. Beispielsweise verwendet Apache einen prozessgesteuerten Ansatz, bei dem mithilfe eines Verarbeitungsmoduls namens mpm_prefork eine neue Anfrage für jeden Thread erstellt wird. Dies kann schnell gehen, wenn die Anzahl der Anfragen geringer ist als die Anzahl der Prozesse, aber danach kommt es zu Leistungseinbußen.

Tatsächlich bietet Apache viel Flexibilität, um mithilfe der Module mpm_prefork , mpm_worker und mpm_event einen Algorithmus zur Verbindungsbehandlung zu erstellen, der Ihren Anforderungen entspricht. Im Gegensatz dazu ist das Design von Nginx so, dass es versucht, die negativen Leistungsaspekte von Apache zu mildern.

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

Dolmetschen anfordern

Sowohl Apache als auch Nginx verfolgen einen anderen Ansatz, um die Anfragen zu interpretieren, die ein Server erhält. Beispielsweise verwendet Nginx 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, z. B. server und location . Sie arbeiten zusammen, um einen URI zu parsen und ihn in etwas innerhalb des Dateisystems umzuwandeln.

 server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Im Gegensatz dazu bedeutet Apaches Wurzeln als „reine“ Webserver-Software, dass es davon ausgeht und auf der Grundlage handelt, dass jede Anfrage eine Ressource im Dateisystem ist. 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 die Leistung geht, ist Apache vs. Nginx für fast jeden Benutzer eine wichtige Überlegung. Im Kontext läuft der Vergleich darauf hinaus, wie jeder Softwaretyp statische und dynamische Inhalte bereitstellt.

Da die inhärente Architektur von Apache direkt mit dem Dateisystem zusammenarbeitet, eignet es sich hervorragend zum Bereitstellen statischer Inhalte. Es verarbeitet jedoch auch dynamische Inhalte innerhalb des Servers, was eine ähnliche Implementierung ist, die auch flexibel ist, wenn Sie Module basierend auf Ihren Anforderungen austauschen müssen.

Im Vergleich dazu verarbeitet Nginx überhaupt keine dynamischen Inhalte. Es ist komplizierter, weil Nginx diese Anfragen an einen externen Arbeiter oder ein Protokoll weitergeben muss. Trotzdem werden Sie feststellen, dass der Leistungsaufwand geringer ist und Nginx andere Protokolle mit größerer Anpassungsfähigkeit verwenden kann.

Für statische Inhalte kann dies genauso einfach sein wie Apache und in einigen Fällen eine leistungsstärkere Option. Dies liegt daran, dass Nginx den Interpreter bei Bedarf kontaktieren kann, anstatt ein fester Bestandteil der Gesamtleistung der Serversoftware zu sein.

Das verteilte Konfigurationsmodell von Apache

Es wird keine Überraschung sein, dass Apache und Nginx beide einen anderen Ansatz für die Serverkonfiguration haben. Kurz gesagt, die Konfiguration von Apache vs. Nginx hängt davon ab, ob Sie dies auf Verzeichnisebene tun können.

Apache verwendet ein verteiltes Modell, was bedeutet, dass Sie den Server pro Verzeichnis konfigurieren können. Sie tun dies über .htaccess Dateien. Apache überprüft jede Komponente des angeforderten Dateipfads auf eine .htaccess -Datei und führt die darin enthaltenen Anweisungen aus.

Eine .htaccess-Datei, die das mod_rewrite-Modul zusammen mit einigen Rewrite-Regeln zeigt.

Unserer Meinung nach ist eine .htaccess -Datei viel flexibler als jedes andere System. Es ist schnell zu finden, zu öffnen und zu bearbeiten. Die Kraft, die Ihnen zur Verfügung steht, um viele mächtige Aktionen auszuführen, ist großartig. Sie werden auch feststellen, dass ein Apache-Server eine .htaccess -Datei verarbeitet, wenn er eine findet, ohne dass der Server neu geladen werden muss.

Es ist auch fantastisch, wenn Sie einigen Benutzern die Kontrolle über Aspekte ihrer Websites überlassen möchten, die sich auf die gesamte Serverkonfiguration auswirken. Aus diesem Grund sind Apache-Server zusammen mit ihrem flexiblen Modulsystem eine tragende Säule von Shared-Hosting-Plattformen.

Module von Apache

Mit Apache können Sie Module dynamisch laden und entladen. Dies ist vergleichbar mit der Verwendung von Plugins und Themes innerhalb von 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 viele Bereiche abdecken, und es sind viele verfügbar. Module wie mod_php können die Kernfunktionalität des Servers ändern, während Sie mit dem beliebten mod_rewrite viele andere Aufgaben ausführen können:

  • Einschränken von IP-Adressen.
  • Ändern des Basisordners für Ihre Site.
  • Durchführung von 301-Weiterleitungen.
  • Festlegen einer Standard-Homepage.

Zwischen .htaccess und dem dynamischen Modulsystem stellt Apache eine klare Möglichkeit für die meisten Benutzer 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. Dies bedeutet, dass es eine Konfigurationsdatei gibt (die mit der Erweiterung .conf endet). Abhängig von Ihrer Serverstruktur ist es manchmal schwierig, sie zu finden.

Dies hat einige klare Nachteile für einen angehenden Websitebesitzer, der Änderungen an einem Server vornehmen möchte. Für Sites auf Shared Hosting ist es fast unmöglich, den Server zu konfigurieren. Es gibt auch viel weniger Flexibilität.

Es gibt jedoch auch einige Vorteile, die sich auf die Leistung beziehen. Da Nginx nur einen Speicherort für eine Konfigurationsdatei hat und Apache möglicherweise mehrere Speicherorte verwenden könnte, gibt es nur eine Suche. Als Erweiterung wird es weniger Leistungseinbußen geben, um auch diese Konfigurationsdatei zu finden.

Da die Konfiguration zentral ist, werden Sie außerdem feststellen, dass Websitebesitzer nicht für die Verwaltung sicherheitsbezogener Aspekte verantwortlich sind. Dies ist ein weiterer Segen für den Ansatz von Nginx, da die Sicherheitsverantwortung nur auf den Schultern des Systemadministrators liegt.

Nginx-Module

Es ist fair zu sagen, dass das Modulsystem von Nginx bei weitem nicht so freizügig oder flexibel ist wie Apache, obwohl es die gleiche Art von Funktionalität bietet. Nehmen Sie zum Beispiel die Weiterleitungsregeln von Nginx:

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

Dies liegt daran, dass Sie sie mit Nginx nicht als dynamische Elemente laden können. Um auf unsere WordPress-Analogie zurückzukommen, ist dies so, als müssten Sie Ihre gesamte Website neu installieren, um ein Plugin zu deaktivieren.

An der Oberfläche scheint dies nicht praktikabel zu sein und scheint ein massiver Nachteil zu sein. Was Ihnen jedoch an Flexibilität fehlt, gewinnen Sie an Kernstabilität und Funktionalität. Wenn Sie wissen, was Ihr Server zur Erstellungszeit benötigt, können Sie alle diese Komponenten und Module einbeziehen.

Es gibt auch einen Sicherheitsaspekt zu berücksichtigen. Da Sie keine dynamischen Module in und aus Ihrem System austauschen müssen, wissen Sie, was jedes Element tut und kann. Es macht die Struktur und Architektur Ihres Servers übersichtlicher, wartungsfreundlicher und performanter.

Warum Sie entweder Apache oder Nginx verwenden würden

Zusammenfassend lässt sich sagen, dass Apache vs. Nginx keine eindeutige Entscheidung ist. Zunächst einmal ist die typische Meinung, Nginx sei eine bessere Leistung als Apache, irreführend. Wenn Sie einen Apache-Server gut einrichten, ist er genauso leistungsfähig wie ein gleichwertiger Nginx-Server.

Apache eignet sich hervorragend, um sowohl statische als auch dynamische Inhalte auf einfache Weise bereitzustellen. Es bietet immense Leistung für diejenigen, die neu in der Verwaltung eines Servers sind, sowie Flexibilität bei der Konfiguration. Im Allgemeinen benötigen Sie weniger technische Kenntnisse, um einen Apache-Server zu konfigurieren als Nginx.

Bei der Leistung glänzt Nginx jedoch. Der Aufbau seiner Architektur stellt sicher, dass er pro Prozessorzyklus mehr erreichen kann als ein Apache-Server. Dies trotz weniger Flexibilität bei der Einrichtung.

In einigen Fällen haben Sie möglicherweise nicht die Wahl zwischen Apache und Nginx, insbesondere wenn Sie einen gemeinsam genutzten Host verwenden. Wenn Sie dies tun, hängt die Wahl jedoch von Ihrem Fachwissen, Ihren Zielen und Bedürfnissen ab.

Zusammenfassung

Ihre Wahl der Serversoftware ist wichtig, und Ihnen stehen unzählige Optionen zur Verfügung. In Wirklichkeit werden Sie im linken Feld keinen Servertyp auswählen. Stattdessen wählen Sie häufig aus zwei oder drei Typen aus. Apache vs. Nginx ist ein oft in Betracht gezogener Vergleich, da beide herausragende, langfristige Leistung und Zuverlässigkeit bieten.

In diesem Artikel wurde untersucht, wie Apache vs. Nginx an diesen beiden Fronten und mehr abschneidet. Es gibt eine ganze Reihe technischer Überlegungen, über die Sie nachdenken müssen, und diese werden Ihre Wahl mehr beeinflussen als die Popularität einer bestimmten Serversoftware in der Community.

Haben Sie eine Meinung zu Apache vs. Nginx? Teilen Sie uns Ihre Gedanken im Kommentarbereich unten mit!