Nginx Hosting Deutschland | full-managed.de

nginx Hosting

nginx, ausgesprochen „engine x“ ist ein HTTP, Reverse Proxy Server und Mail Proxy Server. Die von Igor Sysoev 1995 geschriebene Software wurde lange Zeit für Internetseiten mit sehr hohem Besucheraufkommen genutzt wie Mail.ru und VK. Laut Netflix wurden im Februar 2015 mehr als 20% der am meisten genutzten Internetseiten der Welt von nginx ausgeliefert.

Welche Funktionen bietet nginx?

nginx bietet einfache sowie erweiterte HTTP Funktionalität für zahlreiche Betriebssysteme wie Windows, Linux und Mac OS X. Folgend ein Auszug mit den wichtigsten Funktionen von nginx:

  • Auslieferung von statischen und Index Dateien
  • Einfacher Lastenausgleich (load balancing)
  • Beschleunigtes Caching von FastCGI
  • Modulare Architektur um die Funktionalität zu erweitern (z.B. Bildtransformation)
  • SSL und TLS Unterstützung
  • Virtual Server (IP und namensbasiert)
  • URI rewrite Modul
  • FLV und MP4 Streaming
  • Limitierung von gleichzeitigen Verbindung eines Nutzers
  • HTTP Anmeldeserver für SMTP, IMAP und POP3

Wieso wurde nginx entwickelt?

Die am meisten genutzten Webserver sind Apache und Microsoft IIS. Apache ist Open Source und wurde daher über die Zeit deutlich in seiner Funktionalität erweitert und bietet daher nahezu unbegrenzte Möglichkeiten. Microsoft IIS ist nicht Open Source und kann daher nur sehr begrenzt erweitert werden. Diese Tatsache führt zu der Marktdominanz von Apache.

Das größte Problem von Apache ist, dass es unter hoher Nutzlast schnell zusammenbricht und die Internetseiten nicht mehr ausliefert. Dies liegt an der Architektur von Apache und kann nur bedingt durch eine Erweiterung gelöst werden. Aus diesem Grund wurde nginx entwickelt mit dem Ziel einen Webserver zu nutzen, der auch unter hoher Last noch Internetseiten ausliefert.

Was ist der Unterschied zwischen Apache und nginx?

nginx ist Event-basiert und nicht wie Apache Prozess-basierend. Bei Prozess-basierenden Anwendungen wie Apache wird für jede Nutzeranfrage ein neuer Prozess gestartet. Jedem gestarteten Prozess werden dabei vom System spezielle Resourcen zugewiesen (RAM, CPU). Läuft der Server dabei unter hoher Last werden sehr viele Resourcen zugewiesen und der Server erreicht schnell seine physikalische Grenze.

nginx hingegen erstellt nicht für jede Anfrage einen neuen Prozess. nginx arbeitet mit sogenannten Worker, wobei jeder Worker ein Prozess mit einem Thread ist. Eine Daumenregel ist dabei, dass der Webserver genau so viele Worker haben sollte wie CPUs. Somit wird vermieden, dass die Worker untereinander um Rechenleistung konkurrieren. Dies ermöglicht eine stabile Auslieferung von mehreren Tausend von Anfragen pro Prozess.

Wie funktioniert nginx?

nginx kann eine extrem hohe Zahl von gleichzeitigen Anfragen asynchron handhaben. Dabei verwendet nginx automatisch einen Cache Loader und Cache Manager um die Bearbeitung von Anfragen zu beschleunigen und die Festplattenanfragen zu reduzieren.

nginx wird durch Module erweitert, die bei der Kompilierung eingebunden werden. Somit wird der Quellcode einfach heruntergeladen, die entsprechenden Module ausgewählt und die Software mit gewünschter Funktionalität kompiliert. Die meist genutzten Module sind für Proxy Server, Anbindung an Server für Backend Anwendungen, Proxy Server und Lastenausgleich (Load Balancing). Ein Modul für PHP wird nicht benötigt, da nginx bereits PHP interpretieren kann.

nginx_aufbau

Bildquelle: http://www.aosabook.org/en/nginx.html#fig.nginx.arch

Der Master verteilt die HTTP(S) Anfragen auf die verschiedenen Worker (einfacher Lastenausgleich), wobei diese die Anfragen ausführen. Ist die Anfrage nicht intern (ht_core) zu verarbeiten (beispielsweise Python wird benötigt), dann wird das entsprechende Modul (z.B. FastCGI – ht_fastcgi) genutzt und die Anfrage auf dem Server ausgeführt. Alle Anfragen werden dabei vom Proxy Cache überwacht, dass gewisse Anfragen aus dem Cache bedient werden können und nicht erneut interpretiert werden müssen.

nginx ist Event-basierend, asynchron und nicht blockierend. Dies bedeutet, dass pro Anfrage ein Event erstellt wird und diese gleichzeitig und unabhängig voneinander (asynchron) bearbeitet werden. Sollte der CPU nicht verfügbar sein, so wird die Bearbeitung von Events nicht angehalten und nginx bearbeitet ein anderes Event, das lediglich Festplattenzugriff benötigt. Somit wird sichergestellt, dass ein Event nicht die Bearbeitung von anderen Events verhindert (nicht blockierend).

Wann sollte ich nginx verwenden?

nginx ist besonders Stark bei der Auslieferung von statischen Inhalten durch das interne Cache Management und die Event-basierte Struktur. Bei Anfragen, die eine Interpretation benötigen, wie beispielsweise PHP, Ruby oder Python ist nginx nicht ganz so schnell. Bei der Interpretation von PHP hinkt nginx Apache nicht hinterher, da beide Server den Quellcode intern interpretieren. Für Ruby oder Python benötigt nginx ein Modul mit externem Interpreter (CGI) wobei Apache dies mit entsprechender Erweiterung intern handhaben kann. Aus diesem Grund ist Apache bei der Ausführung von Ruby oder Python Anfragen schneller. Sollen hauptsächlich statische Seiten oder PHP Seiten ausgeliefert werden, so kann nginx deutlich bessere Leistung zeigen, besonders bei Seiten mit hoher Nutzlast.

Welche Kosten entstehen beim Hosting?

Wir bieten nginx als kostenlose Alternative zu Apache an. Dieses Angebot gilt für alle Managed Server und Managed vServer. Teilen Sie uns vor oder nach der Bestellung einfach mit, dass Sie nginx auf Ihrem Server nutzen möchten.

There are no comments.

Schreibe einen Kommentar