Was sind die Unterschiede zwischen Nginx und Apache?

WBOY
Freigeben: 2023-05-15 19:46:04
nach vorne
5543 Leute haben es durchsucht

Nginx ist wie Apache eine HTTP-Serversoftware. Beide unterstützen gängige Sprachschnittstellen wie PHP, Perl, Python usw. und unterstützen auch Forward- und Reverse-Proxy, virtuelles Hosting und URL Umschreiben, komprimierte Übertragung, SSL-verschlüsselte Übertragung usw.

Der Hauptunterschied zwischen Apache und NGINX ist ihre Designarchitektur. Apache verwendet einen prozessgesteuerten Ansatz und erstellt für jede Anfrage einen neuen Thread. NGINX verwendet eine ereignisgesteuerte Architektur, um mehrere Anfragen in einem Thread zu verarbeiten.

Was sind die Unterschiede zwischen Nginx und Apache?

Was ist Apache HTTP Server?

Der Apache-HTTP-Server ist ein plattformübergreifender Open-Source-Webserver, auch bekannt als „httpd“ und Apache. Er verwaltet die Marken und Dienste der Apache Software Foundation. Der Server wird von einer offenen Entwicklergemeinschaft unter ASF entwickelt und gewartet. Apache läuft hauptsächlich unter Linux und betreibt 46 % der Websites weltweit. Es ist eine Schlüsselkomponente des LAMP-Stacks (Linux, Apache, MySQL, PHP).

Was ist ein NGINX-Webserver?

Was ist NGINX? Ausgesprochen? Es wird „Engine X“ ausgesprochen. Es handelt sich um einen Webserver, der 2004 von Igor Sisoev veröffentlicht wurde. Heute ist es mehr als nur ein Webserver! Anfangs wurde Nginx hauptsächlich als Ergänzung zu Apache verwendet. Es wurde hauptsächlich zur Bereitstellung statischer Dateien verwendet, aber heute hat es sich zu einem vollständigen Webserver entwickelt, der die gesamten Webserveraufgaben übernimmt. Nginx wird häufig als Reverse-Proxy, Load Balancer, Mail-Proxy und HTTP-Cache verwendet. Apache und Nginx sind beide die am häufigsten verwendeten Webserver für Linux. Zusammen bedienen sie mehr als 50 % des Netzwerkverkehrs.

Obwohl Apache und NGINX viele Eigenschaften gemeinsam haben, unterscheiden sie sich in vielerlei Hinsicht. Jedes ist auf seine Art herausragend und hat seinen eigenen Zweck und Plan. Um die Unterschiede zu verstehen und Schlussfolgerungen zu ziehen, gehen wir unten den detaillierten End-to-End-Vergleich durch. Am Ende jedes Punktes nennen wir auch den Gewinner jedes Vergleichspunktes.

Was sind die Unterschiede zwischen Nginx und Apache?

Grundlegende Architektur

Wenn es um Apache und Nginx geht, liegt der grundlegende Unterschied in ihrer Designarchitektur. Das bedeutet, dass sie sich darin unterscheiden, wie sie tatsächlich mit Verbindungen und Verkehr umgehen und auf unterschiedliche Verkehrsbedingungen reagieren. Der eine ist ein prozessgesteuerter Ansatz und der andere eine ereignisgesteuerte Architektur.

Apache

Prozessgesteuerter Ansatz, der für jede Anfrage einen neuen Thread erstellt. Apache verfolgt einen Multithread-Ansatz. Es bietet eine Vielzahl mehrerer Verarbeitungsmodule. Bei diesen Vormodulen handelt es sich grundsätzlich um drei Arten von Algorithmen zur Anforderungsbearbeitung. Jeder wird für unterschiedliche Serveranforderungen verwendet. MM (Multiple Processing Module) bietet eine flexible Architektur zur Auswahl verschiedener Verbindungen und verschiedener Verarbeitungsalgorithmen. Darüber hinaus verwenden verschiedene Versionen von Apache 2 unterschiedliche Parade-Module. Die drei wichtigsten Apache-MMs sind: Prozess-MPM (Pre-Fork), Worker-MPM und Ereignis-MPM. Standardmäßig ist Apache 2.2 im Prefork-Modus (mpm_prefork) konfiguriert. Es reagiert auf eine Reihe von Prozessen, von denen jeder jeweils eine einzelne Anfrage bearbeiten kann. Mit anderen Worten: Apache erstellt jedes Mal einen neuen Thread, um jede Verbindungsanfrage zu bearbeiten. Ein Thread ist die kleinste Folge von Programmieranweisungen, die vom Scheduler unabhängig verwaltet werden können. In den meisten Fällen sind Threads Komponenten eines Prozesses. Allerdings kann die grundlegende Architektur von Apache zu einem hohen Ressourcenverbrauch führen und daher Serverprobleme (z. B. Langsamkeit) verursachen. Was sind die Unterschiede zwischen Nginx und Apache?

Nginx

Ereignisgesteuerter Ansatz, mehrere Anfragen in einem Thread verarbeiten, Nginx verwendet eine ereignisgesteuerte Architektur und verarbeitet Anfragen asynchron. Es ist darauf ausgelegt, nicht blockierende, ereignisgesteuerte Verbindungsverarbeitungsalgorithmen zu verwenden. Daher kann sein Prozess Tausende von Verbindungen (Anfragen) in einem einzigen Verarbeitungsthread verarbeiten. Dieses Verbindungsprozessmodul ermöglicht es Nginx, mit begrenzten Ressourcen schnell und umfassend zu arbeiten. Darüber hinaus können Sie Nginx auf Systemen mit geringem Stromverbrauch und Systemen verwenden, die unter hoher Last laufen. Was sind die Unterschiede zwischen Nginx und Apache?

Der Gewinner ist NGiNX – seine Struktur ist leichtgewichtig und seine Architektur ist viel schneller als Apache. Leistung In Bezug auf Apache und Nginx verarbeiten beide Webserver statische und dynamische Inhalte unterschiedlich. Man sagt, Nginx sei besser im Umgang mit statischen Inhalten, mal sehen, ob das stimmt!

Statischer Inhalt

Apache

verwendet einen dateibasierten Ansatz, um statische Inhalte oder Dateien bereitzustellen, die normalerweise auf der Festplatte des Servercomputers gespeichert sind, wie z. B. CSS-Dateien, JavaScript-Dateien oder Bilder. Apache verwendet seinen traditionellen dateibasierten Ansatz für statische Inhalte.

Nginx

Nginx ist der große Bruder, wenn es um die Bereitstellung statischer Inhalte geht. Da die Designarchitektur von Nginx die Last besser bewältigen kann, kann sie statische Inhalte viel schneller bereitstellen. Es ist 2,5-mal schneller als Apache, basierend auf Benchmarks mit bis zu 1.000 gleichzeitigen Verbindungen. Nginx stellt statische Ressourcen bereit, und PHP muss dies nicht wissen. Apache hingegen verarbeitet all diese Anfragen mit hohem Overhead. Dadurch wird Nginx effizienter und beansprucht die Systemressourcen weniger.

Dieses kleine Bild zeigt eine Anforderung für statischen Inhalt, die in Sekundenschnelle verarbeitet wird. Nginx übertrifft hier Apache deutlich!

Was sind die Unterschiede zwischen Nginx und Apache?

Dynamischer Inhalt

Apache

Apache kann dynamische Inhalte innerhalb des Webservers selbst verarbeiten, ohne auf externe Komponenten angewiesen zu sein. Es kann also mit Ihrem eigenen umgehen. Apropos Leistung von Apache vs. Nginx: Nginx ist fast gleichwertig (wenn nicht sogar besser), wenn es um die dynamische Inhaltsverarbeitung geht. Nachfolgend finden Sie einen Vergleich der Anzahl dynamischer Inhaltsanfragen. Es gibt keinen Unterschied im Aussehen.

Was sind die Unterschiede zwischen Nginx und Apache?

Nginx

Es verarbeitet keine dynamischen Inhalte. Apropos dynamische Inhalte: Nginx kann keine dynamischen Inhalte in Webservern wie Apache verarbeiten. Alle Anfragen mit dynamischen Webinhalten werden zur Ausführung an einen externen Prozess (z. B. PHP-FPM) übergeben. Nginx wartet darauf, dass der endgültige Inhalt zurückgegeben und an den Client geliefert wird. Für eine klare Vorstellung sehen Sie sich dieses Bild an: Was sind die Unterschiede zwischen Nginx und Apache?

Bei Verwendung mit SCGI-Handlern und FastCGI-Modulen kann NGINX dynamische Inhalte bereitstellen. Statisch: Nginx schlägt Apache, wenn es um statische Inhalte geht. Dynamisch: Beide sind gut im Umgang mit dynamischen Inhalten.

OS-Unterstützung

OS-Unterstützung kann ein wichtiger zu berücksichtigender Punkt sein, insbesondere beim Vergleich von Apache und Nginx. Aber beide sind hier fast ähnlich.

Apache

unterstützt alle Unix-ähnlichen Systeme, einschließlich Linux und BSD. Es unterstützt vollständig MS-WindowsApache, das auf einer Vielzahl von Unix-ähnlichen Systemen wie Linux oder BSD läuft, und unterstützt vollständig Microsoft Windows.

Nginx

unterstützt fast alle Betriebssysteme wie Unix. Teilweise unter Windows unterstützt. Es läuft auch auf mehreren modernen Unix-basierten Systemen und bietet eine gewisse Unterstützung für Windows, aber seine Windows-Leistung ist nicht so robust wie bei anderen Plattformen.

Der Gewinner ist hier Apache.

Verteilte/Zentralisierte Konfiguration

Apache vs. Nginx ist ein wohlverdientes Thema. Ihre Konfiguration unterscheidet sie voneinander und macht sie gleichermaßen interessant. Mal sehen, wessen Konfiguration einfacher und schneller ist.

Apache

ermöglicht eine zusätzliche Konfiguration pro Verzeichnis über .htaccess-Dateien. Diese Architektur ermöglicht es unprivilegierten Benutzern, bestimmte Aspekte ihrer Website zu kontrollieren, ohne ihnen die Berechtigung zum Bearbeiten der Hauptkonfiguration zu erteilen. Dieser ist riesig!

Nginx

erlaubt keine zusätzliche Konfiguration. Andererseits hat es einen Nachteil. Es bietet keine zusätzliche Konfiguration. Dies wirkt sich jedoch zu Ihrem Vorteil aus, da dadurch die Leistung gesteigert wird. Da die Verzeichniskonfiguration nicht zulässig ist, können Anfragen schneller als Apache bearbeitet werden. Es ist nicht erforderlich, .htaccess-Dateien zu durchsuchen und benutzerdefinierte Anforderungen zu interpretieren.

Gewinner: Wenn die Konfiguration ein Problem darstellt, entscheiden Sie sich für Apache; wenn die Konfiguration ein Problem darstellt, entscheiden Sie sich für Apache. Wenn die Geschwindigkeit NGinx ist.

Erklärung der Anfrage

In der Debatte zwischen Apache und Nginx sind Methoden zur Interpretation von Anfragen ein interessantes Vergleichsthema. Sie alle behandeln und interpretieren Anfragen auf völlig unterschiedliche Weise.

Ihre unterschiedlichen Ansätze machen sie einzigartig und machen das eine auch ein bisschen besser als das andere. Lass es uns erkunden!

Apache

Übergibt den Speicherort des Dateisystems und bietet so die Möglichkeit, Anforderungen zu interpretieren. Physische Ressourcen wie Dateisystemspeicherorte erfordern möglicherweise eine abstraktere Bewertung. Die Anforderung wird als Dateisystemspeicherort übergeben.

Natürlich verwendet Apache URI-Standorte, aber sie werden im Allgemeinen für abstraktere Ressourcen verwendet. Apache verwendet beim Erstellen oder Konfigurieren eines virtuellen Hosts den Verzeichnisblock unter dem Dokumentstamm.

Diese Präferenz für den Speicherort des Dateisystems ist auch sichtbar, wenn .htaccess-Dateien verwendet werden, um bestimmte Verzeichniskonfigurationen zu überschreiben.

Was sind die Unterschiede zwischen Nginx und Apache?

Nginx

Nginx interpretiert Anfragen über URI und wird als Webserver und Reverse-Proxy-Server erstellt. Aufgrund dieser architektonischen Anforderungen nutzt Nginx hauptsächlich Ihre Augen. Bei Bedarf auf System umstellen. Es bietet keinen Mechanismus zum Festlegen der Konfiguration. Übergeben Sie für ein Dateisystemverzeichnis dessen URI selbst. Durch die Übergabe der Anfrage (URI) anstelle des Dateisystemspeicherorts kann Nginx problemlos auf Web- und Proxyservern ausgeführt werden. Es wird einfach dadurch konfiguriert, wie das Layout auf unterschiedliche Anforderungsmuster reagiert. Was sind die Unterschiede zwischen Nginx und Apache?

Es überprüft das Dateisystem erst, wenn es bereit ist, die Anfrage zu bearbeiten, was erklärt, warum es keinerlei Form einer .htaccess-Datei implementiert. Dieses Design, Anfragen als URI-Standorte zu interpretieren, ermöglicht es Nginx, nicht nur problemlos als Webserver, sondern auch als Proxyserver, Load Balancer und HTTP-Cache zu fungieren.

Außerdem gewinnt NGINX im Wettbewerb Apache vs. Nginx erneut in Bezug auf die Übertragungsrate (wie schnell Daten vom Server zum Client gesendet werden). In den meisten Fällen gewinnt Nginx mit einem fairen Verhältnis von 500/100.

Was sind die Unterschiede zwischen Nginx und Apache?

Gewinner: Es scheint, dass Nginx gewinnt, weil es schneller interpretiert und reagiert.

Funktionsmodule

Beide sind durch das Modulsystem erweiterbar. Aber die Art und Weise, wie sie arbeiten, ist anders. Vergleichen wir die Funktionsmodule zweier Webserver: Apache vs. Nginx!

Apache

60 dynamisch ladbare offizielle Module zum Ein-/Ausschalten Der Apache-Server verfügt über zahlreiche Funktionen, die durch die Installation eines der 60 offiziellen Module aktiviert werden können. Es gibt viele andere inoffizielle Module, die leicht im Internet zu finden sind.

Das Modulsystem ermöglicht es Ihnen, Module je nach Bedarf dynamisch zu laden oder zu entladen. Seine Module können ein- oder ausgeschaltet werden, um Funktionen hinzuzufügen oder zu entfernen und eine Verbindung zum Hauptserver herzustellen.

Kurz gesagt: Apache verfügt über mehrere Funktionsmodule, die Ihren Anforderungen gerecht werden, viele davon werden jedoch nicht häufig verwendet.

Nginx

Kernmodule von Drittanbietern (nicht dynamisch ladbar) Andererseits wird Nginx ausgewählt und in ein Drittanbieter-Plug-In kompiliert. Es kann nicht dynamisch geladen werden. Diese Module sind nützlich, ermöglichen Ihnen jedoch die Entscheidung, was Sie vom Server erhalten möchten, indem sie nur die Funktionalität einbeziehen, die Sie verwenden möchten. Er gilt als wesentlich sicherer als der Apache-Server, da sich beliebige Komponenten im Server verbinden können. Darüber hinaus bietet NGINX alle Kernfunktionen eines Webservers, ohne auf die leichten und leistungsstarken Funktionen zu verzichten, die Sie für den Erfolg benötigen. Apache ist wie Microsoft Word und Nginx ist wie Notepad. Apache bietet eine Million Optionen, aber Sie benötigen nur wenige. Nginx erledigt „einige“ dieser Dinge und erledigt sie 50-mal schneller als Apache.

Gewinner: NGiNX – Es ist weniger wichtig, aber die Funktionen und Module machen es zu einem leichteren, intelligenteren und besseren Webserver als Apache.

Flexibilität

Flexibilität ist eines der wichtigsten Themen für Webserver. Es gibt einige interessante Unterschiede in der Flexibilität von Apache und Nginx.

Apache

unterstützt die Anpassung des Webservers durch dynamische Module. Der Webserver kann über das Fahrmodul angepasst werden. Das Laden der dynamischen Module von Apache dauert am längsten, daher unterstützen alle Apache-Module diese Funktion.

Nginx

ist nicht flexibel genug, um dynamische Module und das Laden zu unterstützen. Dies ist jedoch bei NGINX nicht der Fall. Anfang 2016 erhielt NGINX Unterstützung für das dynamische Laden von Modulen. Zuvor mussten Administratoren bei NGINX Module in NGINX-Binärdateien kompilieren. Die meisten Module unterstützen das dynamische Laden noch nicht, aber mit der Zeit könnte dies der Fall sein. Gewinner: Apache – derzeit liegt es klar vorne.

Sicherheit

Apache vs. Nginx Sicherheit ist wieder einmal ein Diskussionsthema. Nun, beide Webserver bieten hervorragende erweiterte Sicherheit für C-basierte Codebasen.

Apache

ist sehr sicher. Apache stellt sicher, dass alle auf seinen Servern ausgeführten Websites vor Schäden und Hackerangriffen geschützt sind. Daher bietet es Konfigurationshinweise für den Umgang mit DDoS-Angriffen sowie das Modul mod_evasive zur Reaktion auf HTTP-DoS-, DDoS- oder Brute-Force-Angriffe.

NGINX

Minimaler Code für mehr Sicherheit. Allerdings ist die Codebasis von NGINX um Größenordnungen kleiner, sodass dies aus zukunftsweisender Sicherheitsperspektive durchaus ein großer Vorteil ist. NGINX listet auch aktuelle Sicherheitshinweise auf. Lesen Sie einen Artikel zur Abwehr von DDoS-Angriffen im Nginx-Blog. Gewinner: Nginx – Es gilt als sicherer

Support

Support ist das, was sich jeder Kunde wünscht. Es kann Ihr Benutzererlebnis verändern oder beeinträchtigen. Beim Vergleich der Apache- und Nginx-Unterstützung scheint es keinen großen Unterschied zu geben.

Apache

Community-Support erfolgt über Mailinglisten, IRC und Stack Overflow. Kommerzieller Apache-Support ist von vielen Drittunternehmen wie OpenLogic verfügbar, die Apache Foundation führt jedoch keine offizielle Liste. Der Apache-Server ist darauf ausgelegt, allen Benutzern leistungsstarke Unterstützung zu bieten.

Nginx

Community-Unterstützung über Mailingliste, IRC, Stack Overflow und Foren. Das Unternehmen hinter NGINX bietet ein kommerzielles Produkt namens NGINX Plus an, das eine Reihe zusätzlicher Funktionen rund um Lastausgleich, Medienstreaming und Überwachung unterstützt.

Gewinner:! Die Unterstützung ist für beide nahezu gleich. Beide Webserver sind großartig.

Am Ende

können weder Apache noch Nginx durch die anderen ersetzt werden, sie haben ihre Stärken und Schwächen. Nachdem Sie die Vorteile, Einschränkungen und Unterschiede verstanden haben, haben Sie wahrscheinlich bereits eine Vorstellung davon, welcher Webserver für Sie am besten geeignet ist.

In unserem Beitrag über Apache vs. Nginx wurden 5 von 9 Punkten von Nginx gewonnen und 2 Punkte waren zwischen Apache und Nginx „gleichstandig“. Daher können wir deutlich erkennen, dass NGINX Apache voraus ist.

Wann sollte man Apache statt Nginx wählen?

i) Apache.

NGINX unterstützt keine Apache-ähnlichen .htaccess-Dateien. Mit Apache haben Sie jedoch den Vorteil, dass nicht privilegierte Benutzer bestimmte wichtige Aspekte ihrer Website steuern können.

Anscheinend ist es Benutzern nicht gestattet, die Hauptkonfiguration zu bearbeiten. Systemweite Einstellungen können mithilfe von .htaccess-Dateien verzeichnisweise überschrieben werden. Um eine optimale Leistung zu erzielen, fügen Sie diese .htaccess-Anweisungen in die Hauptkonfigurationsdatei ein. In einer Shared-Hosting-Umgebung funktioniert Apache aufgrund seiner .htaccess-Konfiguration besser. P.S. Für dediziertes Hosting oder VPS bleibt Nginx die beste Option.

ii) Mit eingeschränkter Funktionalität = Verwendung von Apache

Nginx verfügt über einige sehr wichtige Kernmodule. Allerdings weist Nginx einige funktionale Einschränkungen auf.

Wenn bestimmte Einschränkungen bestehen oder Sie zusätzliche Module verwenden müssen, die Nginx nicht unterstützt, möchten Sie möglicherweise stattdessen Apache wählen.

Wann sollte man Nginx gegenüber Apache wählen?

i) Schnelle statische Inhaltsverarbeitung

Nginx kann statische Dateien aus einem bestimmten Verzeichnis besser verarbeiten.

Darüber hinaus wird der Upstream-Serverprozess nicht aufgrund einer großen Anzahl statischer Inhaltsanforderungen blockiert, da Nginx diese gleichzeitig verarbeiten kann. Dadurch wird die Gesamtleistung des Backend-Servers deutlich verbessert.

Nginx ist kontinuierlich bestrebt, den Benutzern ein besseres Erlebnis zu bieten. Im Jahr 2018 verzeichnete es ein deutliches Wachstum. Werfen Sie einen Blick auf die wichtigsten Erkenntnisse aus dem Jahr 2018 im Nginx-Blog.

ii) Ideal für stark frequentierte Websites

Wenn wir über Geschwindigkeit und die Anzahl der Clients sprechen, die unter hoher Auslastung bedient werden können, wird Nginx immer als Sieger gegenüber Apache glänzen.

Dadurch ist Nginx deutlich leichtgewichtiger und ideal für Serverressourcen. Aus diesem Grund bevorzugen die meisten Webentwickler Nginx gegenüber Apache.

Vor allem die heutigen E-Shops stellen einen Magento-Entwickler ein, der weiß, wie man an stark frequentierten Websites arbeitet und gut mit Nginx arbeiten kann.

Kurz gesagt: Wenn es darum geht, eine Website mit viel Traffic bereitzustellen, ist Nginx unschlagbar.

Oder nutzen Sie beide

Verwenden Sie beide gleichzeitig. Sie können sie nutzen, indem Sie die Vorteile jedes Servers miteinander kombinieren.

Sie können Nginx vor Apache als Server-Proxy verwenden (wie im Bild unten gezeigt). Dies nutzt die schnelle Verarbeitungsgeschwindigkeit von Nginx und die Fähigkeit, große Verbindungen gleichzeitig aufzubauen. Was sind die Unterschiede zwischen Nginx und Apache?

Bei statischen Verbindungen stellt Nginx dem Client schnell Dateien bereit. Bei dynamischen Inhalten wie PHP-Dateien leitet der Nginx-Reverse-Proxy-Server ihre Anfragen an Apache weiter, der dann seine Ergebnisse verarbeiten und seine gerenderte Seite zurückgeben kann.

Nginx kann dann den endgültigen Inhalt an den Kunden liefern. Darüber hinaus können Sie über einen sehr funktionalen Webserver verfügen, der Ihre Kunden (eine große Anzahl von Benutzern) sehr schnell bedient.

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen Nginx und Apache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!