Heim > Artikel > Backend-Entwicklung > So wählen Sie zwischen Apache und Nginx
Es gibt viele WEB-Server-Produkte auf dem Markt, und die Mainstream-Produkte sind Apache und Nginx. Aber auch die Wahl zwischen Apache und Nginx verwirrt viele Anfänger. In diesem Artikel werden Apache und Nginx verglichen, um allen ein klareres Verständnis und eine bessere Auswahl zu ermöglichen.
1. Einführung
Apache:
Apache wurde 1995 erstellt und wird seit 1999 von der Apache Software Foundation entwickelt. Apache ist flexibel, effizient, verfügt über umfangreiche Erweiterungsmodule und aktive Community-Unterstützung, was es zur meistgenutzten Open-Source- und kostenlosen Webserver-Software der Welt macht.
Nginx:
Nginx ist ein kostenloser Open-Source-Webserver, der vom russischen Softwareentwickler Igor Sysoev geschrieben wurde. Seit seiner Einführung im Jahr 2004 konzentriert sich Nginx auf hohe Leistung, hohe Parallelität und geringe Speichernutzung. Und seine Funktionen in den Bereichen Lastausgleich, Caching, Zugriffs- und Bandbreitenkontrolle sowie effiziente Integration in verschiedene Anwendungen haben es bei den Benutzern allmählich beliebt gemacht.
Das Folgende ist die neueste Vergleichstabelle zum Marktanteil von Webservern, aktualisiert am 21. November 2017:
2. Vergleich
Apache und Nginx haben zwar unterschiedliche Hintergründe, ihre Funktionen und Zwecke sind jedoch gleich: Sie empfangen Benutzeranfragen, verarbeiten die Anfragen und geben schließlich die Verarbeitungsergebnisse an die zurück Benutzer.
1. Linkverarbeitung
Der größte Unterschied zwischen Apache und Nginx besteht darin, wie sie mit Verbindungen umgehen. Apache stellt eine Reihe von Multi-Processing-Modulen bereit, über die Betriebssystemressourcen genutzt, Prozesse und Thread-Pools verwaltet sowie Benutzeranfragen gesteuert und verarbeitet werden.
Apache bietet drei Multi-Processing-Module: mpm_prefork, mpm_worker und mpm_envent. Im Folgenden werden wir sie kurz erklären und vergleichen.
mpm_prefork: Das Modul generiert viele Unterprozesse, jeder Unterprozess ist Single-Threaded und jeder Thread verknüpft eine Anforderung, also eine Eins-zu-Eins-Beziehung. Wenn daher die Anzahl der Anfragen größer ist als die Anzahl der Prozesse, ist die Leistung des Servers unbefriedigend.
mpm_worker: Im Gegensatz zu Prefork ist der Worker-Neutronenprozess multithreaded und jeder Thread verwaltet eine Benutzerverbindung. Die Anzahl der Threads ist größer als die Anzahl der Prozesse, was bedeutet, dass neue Verbindungen sofort einen inaktiven Thread erhalten können, ohne darauf warten zu müssen, dass der Prozess inaktiv wird.
mpm_event: Dieses Modul ähnelt dem Worker. Der Unterschied besteht darin, dass das Ereignis lange Verbindungen verarbeiten kann (Keep-Alive), um zu vermeiden, dass Threads über einen längeren Zeitraum durch Anforderungen belegt werden und eine Ressourcenverschwendung entsteht in Szenarien mit hoher Parallelität.
Im Gegensatz zu Apache wird Nginx asynchron, nicht blockierend und ereignisgesteuert implementiert. Der Nginx-Arbeitsprozess ist ein Single-Thread-Prozess, und jeder Thread kann eine große Anzahl von Benutzeranforderungen asynchron verarbeiten. Das Folgende ist das Funktionsprinzipdiagramm von Nginx:
2. Verarbeitung statischer und dynamischer Inhalte
Ganz gleich, ob es sich um statische oder dynamische Inhalte handelt, Apache verfügt über integrierte Funktionen zum Parsen und Ausführen einer Vielzahl dynamischer Skriptsprachen (einschließlich PHP, Python und Perl). ohne dass ein externer Prozessor erforderlich ist.
Es besteht kein Zweifel, dass die dynamische Inhaltsverarbeitung wahrscheinlich der Schwachpunkt von Nginx ist. Nginx ist bei der Verarbeitung dynamischer Inhalte nicht effizient und erfordert die Hilfe eines externen Prozessors. Wenn Ihre Site also über viele dynamische Funktionen verfügt, könnte die Leistung von Apache Ihren Wünschen entsprechen. Obwohl Nginx im Vergleich zu Apache über schlechte Fähigkeiten zur Verarbeitung dynamischer Inhalte verfügt, ist die Verarbeitung statischer Inhalte dennoch sehr effizient.
3. Zusammenfassung
Apache bietet umfangreiche Modulkomponentenunterstützung, starke Stabilität, wenige Fehler und eine starke dynamische Inhaltsverarbeitung.
Nginx ist leichtgewichtig, beansprucht weniger Ressourcen, verfügt über Lastausgleich, starke Verarbeitung bei hoher Parallelität und effiziente Verarbeitung statischer Inhalte.
Es macht Sinn, dass Apache und Nginx ihre eigenen Stärken als WEB-Dienste haben. Ich persönlich glaube nicht, dass einer von ihnen den anderen in Zukunft vollständig ersetzen wird. Der Schlüssel liegt darin, dass Benutzer ihre Anwendungsszenarien sorgfältig abwägen und anhand ihrer eigenen Bedürfnisse und Umstände entscheiden sollten, welches Produkt am besten zu ihnen passt.
Verwandte Lektüre:
So konfigurieren Sie Apache HTTP Server unter Ubuntu 16.04
Detaillierte Installation und Konfiguration von Apache, PHP7 und MySQL5.7 in CentOS7
Beispielcode zum Ersetzen des Nginx-Servers durch Tengine in der LNMP-Umgebung
Nginx-Reverse-Proxy und Lastausgleichspraxis
Das obige ist der detaillierte Inhalt vonSo wählen Sie zwischen Apache und Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!