Warum ich Nginx praktisch besser finde als Apache

Warum ich Nginx praktisch besser finde als Apache

Laut der neuesten Web Server -Umfrage von NetCraft, die gegen Ende 2017 (genau im November) durchgeführt wurde, sind Apache und Nginx die am häufigsten verwendeten Open -Source -Webserver im Internet.

Apache ist ein kostenloser Open-Source-HTTP-Server für UNIX-ähnliche Betriebssysteme und Windows. Es wurde als sichern, effizienter und erweiterbar.

Seit es startet, Apache ist seit 1996 der beliebteste Webserver im Internet. Es ist der De -facto -Standard für Webserver im Linux- und Open -Source -Ökosystem. Neue Linux -Benutzer finden es normalerweise einfacher, einzurichten und zu verwenden.

Nginx (ausgesprochen 'Motor-x') ist ein kostenloser HTTP-Server mit Open-Source-, Hochleistungs-HTTP, Reverse Proxy und ein IMAP/POP3-Proxy-Server. Genau wie Apache wird auch Unix-ähnliche Betriebssysteme und Windows ausgeführt.

Bekannt für seine hohe Leistung, Stabilität, einfache Konfiguration und geringe Ressourcenverbrauch. Er ist im Laufe der Jahre so beliebt und seine Verwendung im Internet geht auf größere Höhen auf. Es ist jetzt der Webserver der Wahl unter erfahrenen Systemadministratoren oder Web -Masters von Top -Websites.

Einige der geschäftigen Websites, die von angetrieben werden:

  • Apache sind: paypal, bbc.com, bbc.CO.Großbritannien, SSlllabs.com, Apple.com plus viel mehr.
  • Nginx sind: netflix, udemy.Com, Hulu, Pinterest, Cloudflare, WordPress.Com, Github, Soundcloud und viele andere.

Es sind bereits zahlreiche Ressourcen im Internet im Zusammenhang mit dem Vergleich zwischen veröffentlicht Apache Und Nginx (Ich meine wirklich 'Apache vs nginx'Artikel), von denen viele deutlich erklären, ihre Top -Merkmale und -Operationen unter verschiedenen Szenarien, einschließlich Leistungsmessungen in Laborbenchmarks. Deshalb wird das hier nicht behandelt.

Ich werde einfach meine Erfahrungen und Gedanken über die gesamte Debatte teilen, nachdem ich ausprobiert habe Apache Und Nginx, Beide in Produktionsumgebungen, die auf Anforderungen für das Hosting moderner Webanwendungen im nächsten Abschnitt basieren.

Gründe, warum ich Nginx praktisch besser finde als Apache

Im Folgenden finden Sie Gründe, warum ich den Nginx -Webserver über Apache für moderne Webinhaltezubereitstellen bevorzuge:

1. Nginx ist leicht

Nginx ist einer der Webserver von Leichtgewicht da draußen. Es verfügt über kleine Fußabdrücke in einem System im Vergleich zu Apache, das einen riesigen Funktionsbereich implementiert, der für die Ausführung einer Anwendung erforderlich ist.

Da Nginx eine Handvoll Kernfunktionen zusammenstellt, beruht es auf dedizierten dritten partzigen Webservern wie einem Apache -Backend-, Fastcgi-, Memcached-, SCGI- und UWSGI -Servern oder einem Anwendungsserver, i.E Sprachspezifische Server wie Knoten.JS, Tomcat usw.

Daher ist seine Speicherverwendung für begrenzte Ressourcenbereitstellungen weitaus besser geeignet als Apache.

2. Nginx ist für hohe Parallelität ausgelegt

Im Gegensatz zu Apache's Threaded- oder Process-orientiertes Architektur (Prozess-Per-Konnektion oder Thread-per-Connection-Modell), Nginx Verwendet eine skalierbare, ereignisgesteuerte (asynchrone) Architektur. Es verwendet ein haftbares Prozessmodell, das auf die verfügbaren Hardware -Ressourcen zugeschnitten ist.

Es verfügt über einen Master -Prozess (der die privilegierten Vorgänge wie das Lesen von Konfiguration und Bindung an Ports ausführt) und die mehrere Arbeiter- und Helferprozesse erzeugt.

Die Arbeitsprozesse können jeweils Tausende von HTTP -Verbindungen gleichzeitig verarbeiten, Inhalte auf Festplatte lesen und schreiben und mit vorgelagerten Servern kommunizieren. Die Helferprozesse (Cache -Manager und Cache Loader) können in den Caching -Vorgängen des Disk -Inhalts verwalten.

Dies macht seinen Betrieb skalierbar und führt zu hoher Leistung. Dieser Entwurfsansatz macht es weiterhin schnell, günstig für moderne Anwendungen. Darüber hinaus können Module von Drittpartei verwendet werden, um die nativen Funktionen in Nginx zu erweitern.

3. Nginx ist einfach zu konfigurieren

Nginx hat eine einfache Konfigurationsdateistruktur, die sie super einfach zu konfigurieren macht. Es besteht aus Modulen, die von den in der Konfigurationsdatei angegebenen Anweisungen gesteuert werden. Darüber hinaus sind Richtlinien in Blockrichtlinien und einfache Richtlinien unterteilt.

Eine Blockrichtlinie wird durch Zahnspangen definiert ( Und ). Wenn eine Blockanweisung in Klammern andere Anweisungen haben kann, wird sie als Kontext wie Ereignisse, HTTP, Server und Standort bezeichnet.

http server  

Eine einfache Richtlinie besteht aus dem Namen und den Parametern, die durch Leerzeichen getrennt sind und endet mit einem Semikolon (;).

http server location/## Dies ist eine einfache Anweisung, die als Root/var/www/hmtl/Beispiel bezeichnet wird.com/;  

Sie können beispielsweise benutzerdefinierte Konfigurationsdateien mithilfe der Richtlinie einfügen.

http server  ## Beispiele für zusätzliche Konfigurationsdateien umfassen/path/to/config/file/*.conf; Inhaftieren/Pfad/to/config/Datei/SSL.conf;  

Ein praktisches Beispiel für mich war, wie ich es geschafft habe, NGINX einfach so zu konfigurieren, dass mehrere Websites mit unterschiedlichen PHP -Versionen ausgeführt werden, was bei Apache eine kleine Herausforderung darstellte.

4. Nginx ist ein ausgezeichneter Frontend -Proxy

Eine der üblichen Verwendungen von Nginx Richtet es als Proxy -Server ein, in diesem Fall empfängt es HTTP -Anfragen von Clients und übergibt sie an Proxied- oder Upstream -Server, die oben erwähnt wurden, über verschiedene Protokolle. Sie können auch Header für Client -Anforderungen ändern, die an den Proxied -Server gesendet werden, und die Pufferung von Antworten konfigurieren, die von den stellvertretenden Servern stammen.

Dann erhält es Antworten von den stellvertretenden Servern und übergibt sie an Clients. Es ist mush einfacher zu konfigurieren als Proxy -Server im Vergleich zu Apache, da die erforderlichen Module in den meisten Fällen standardmäßig aktiviert sind.

5. Nginx ist bemerkenswert, um statische Inhalte zu bedienen

Statische Inhalte oder Dateien sind in der Regel auf der Festplatte auf dem Servercomputer gespeicherte Dateien, z. B. CSS -Dateien, JavaScripts -Dateien oder Bilder. Betrachten wir ein Szenario, in dem Sie Nginx als Frontend für NodeJS (den Anwendungsserver) verwenden (den Anwendungsserver).

Obwohl der NodeJS-Server (speziell Node Frameworks) in Funktionen für die statische Dateibehandlung integriert ist, müssen sie keine intensive Verarbeitung durchführen, um nicht-dynamische Inhalte zu liefern Kunden.

Nginx Kann eine viel bessere Aufgabe bei der Bearbeitung von statischen Dateien aus einem bestimmten Verzeichnis ausführen und verhindern,. Dies verbessert die Gesamtleistung von Backend -Servern erheblich.

6. Nginx ist ein effizienter Lastausgleicher

Um hohe Leistung und Verfügbarkeit für moderne Webanwendungen zu realisieren. Dies kann wiederum erforderlich sein, um Lastausgleich einzurichten, um die Ladung zwischen Ihren HTTP -Servern zu verteilen.

Heutzutage ist das Lastausgleich zu einem weit verbreiteten Ansatz zur Optimierung der Ressourcenauslastung des Betriebssystems, zur Maximierung der Flexibilität, zur Verringerung der Latenz, zur Erhöhung des Durchsatz.

Nginx verwendet die folgenden Lastausgleichsmethoden:

  • Round-Robin (Standardmethode)- Anforderungen an die vorgelagerten Server sind rund-Robin-Weise verteilt (in der Reihenfolge der Liste der Server im Upstream-Pool).
  • am wenigsten verbunden - Hier wird die nächste Anfrage mit der geringsten Anzahl aktiver Verbindungen auf den Server eingesetzt.
  • IP-HASH - Hier wird eine Hash-Funktion verwendet, um zu bestimmen, welcher Server für die nächste Anforderung ausgewählt werden soll (basierend auf der IP-Adresse des Clients).
  • Generischer Hash - Nach dieser Methode gibt der Systemadministrator einen Hash (oder Schlüssel) mit dem angegebenen Text, Variablen der Anforderung oder Laufzeit oder ihrer Kombination an. Zum Beispiel kann der Schlüssel eine Quell -IP und einen Port oder ein URI sein. Nginx verteilt dann die Last unter den stromaufwärts gelegenen Servern, indem er einen Hash für die aktuelle Anfrage generiert und gegen die vorgelagerten Server platziert.
  • Geringste Zeit (Nginx plus) - weist die nächste Anforderung dem Upstream -Server mit der geringsten Anzahl aktueller Verbindungen zu, bevorzugt die Server jedoch mit den niedrigsten durchschnittlichen Antwortzeiten.

7. Nginx ist sehr skalierbar

Außerdem, Nginx ist hoch skalierbar und modern.

Ein Unternehmen, das von den erstaunlichen Skalierbarkeitsfunktionen von Nginx profitiert, ist Cloudflare, Es wurde geschafft, seine Webanwendungen so zu skalieren, dass sie mehr als 15 Milliarden monatliche Seitenaufrufe mit einer relativ bescheidenen Infrastruktur verarbeiten, wie lautet Matthew Prince, Mitbegründer und CEO von Cloudfare.

Eine umfassendere Erklärung finden Sie in diesem Artikel im NGINX -Blog: Nginx vs. Apache: Unsere Ansicht einer zehn Jahre alten Frage.

Abschluss

Beide Apache Und Nginx kann nicht durcheinander ersetzt werden, sie haben ihre starken und Schwachstellen. Jedoch, Nginx Bietet eine leistungsstarke, flexible, skalierbare und sichere Technologie, um moderne Websites und Webanwendungen zuverlässig und effizient zu betreiben. Wie nimmst du?? Lassen Sie uns über das Feedback -Formular unten wissen.