Apache & Nginx. In einer Kette verbunden

Wie die Kombination aus Apache & Nginx bei Timeweb umgesetzt wird

Für viele Unternehmen ist Nginx + Apache + PHP eine sehr gängige und verbreitete Kombination, und auch Timeweb macht da keine Ausnahme. Es kann jedoch interessant und nützlich sein, zu verstehen, wie genau diese Implementierung aussieht.

Apache & Nginx. Durch eine Kette verbunden

Der Einsatz einer solchen Kombination ist natürlich durch die Bedürfnisse unserer Kunden bedingt. Sowohl Nginx als auch Apache spielen eine besondere Rolle, jeder erfüllt eine spezifische Funktion.

Die Hauptkonfigurationen Apache werden in den Konfigurationsdateien von Apache selbst vorgenommen, während die Einstellungen für Kundenseiten über die .htaccess-Datei. .htaccess ist eine Konfigurationsdatei, in der der Kunde selbst Regeln und das Verhalten des Webservers anpassen kann. Diese Einstellungen beziehen sich konkret auf seine Website. Beispielsweise können Benutzer durch die Funktionalität von Apache den Betriebsmodus innerhalb einer PHP-Version von mod_php auf mod_cgi ändern; es können Weiterleitungen, SEO-Optimierungen, benutzerfreundliche URLs und einige Limiten für PHP konfiguriert werden.

Nginx wird als Proxy-Server verwendet, um den Datenverkehr an Apache weiterzuleiten, und als Webserver für die Bereitstellung von statischen Inhalten. Für Nginx haben wir auch Sicherheitsmodule entwickelt, die es ermöglichen, die Daten unserer Nutzer zu schützen, beispielsweise durch die Trennung von Zugriffsrechten.

Stellen wir uns vor, ein Benutzer besucht die Website eines unserer Kunden. Zunächst gelangt der Benutzer auf Nginx, der den statischen Inhalt bereitstellt. Dies geschieht sofort. Wenn es dann um das Laden von PHP geht, leitet Nginx die Anfrage an Apache weiter. Apache generiert zusammen mit PHP dann den dynamischen Inhalt.

Besonderheiten der Kombination von Apache & Nginx in Timeweb

Auf unserem virtuellen Hosting sind 2 Hauptarbeitsmodelle von Apache & Nginx implementiert: Shared und Dedicated.

Das Shared-Modell

Dieses Modell wird von den meisten Nutzern verwendet. Es zeichnet sich durch Einfachheit und Ressourcenschonung aus: Das Shared-Modell benötigt weniger Ressourcen, wodurch auch der Tarif günstiger ist. In diesem Schema läuft ein Nginx-Server, der alle Benutzeranfragen bedient, und mehrere Instanzen von Apache.

Das Shared-Modell wurde über einen längeren Zeitraum verbessert: Nach und nach haben wir Fehler behoben. Praktisch ist, dass keine Änderungen am Quellcode erforderlich sind.

Apache & Nginx. Durch eine Kette verbunden
Shared-Modell

Das Dedicated-Modell

Dedicated erfordert mehr Ressourcen, weshalb der Tarif für Kunden höher ist. Bei der Dedicated-Architektur wird für jeden Kunden eine separate Apache-Instanz hochgefahren. Die Ressourcen sind exklusiv für den Kunden reserviert. So funktioniert es: Auf dem Server sind mehrere PHP-Versionen vorhanden. Wir unterstützen die Versionen 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Für jede PHP-Version wird eine eigene Apache-Instanz gestartet.

Apache & Nginx. Durch eine Kette verbunden
Dedicated-Architektur

Sichere Zone. Einrichtung von Zonen in Nginx

Früher verwendeten wir für Nginx viele Zonen im Shared Memory (zone) — ein Block server für eine Domain. Diese Konfiguration erfordert viele Ressourcen, da für jede Website eine separate Zone erstellt wird. Da jedoch die meisten Websites in den Nginx-Einstellungen ähnlich sind, können sie durch die Verwendung der map-Direktive im Modul ngx_http_map_module, in einer einzigen Zone untergebracht werden, indem entsprechende Zuordnungen festgelegt werden. Zum Beispiel haben wir eine Zonen-Vorlage, in die wir Variablen: den Pfad zur Website, die PHP-Version, den Benutzer liefern müssen. Dadurch wurde das Lesen der Nginx-Konfiguration, also das Reload, beschleunigt.

Eine solche Konfiguration hat die Ressourcen des Arbeitsspeichers stark eingespart und die Leistung von Nginx beschleunigt.

Reload wird nicht durchgeführt!

In unserem Shared-Hosting-Modell haben wir die Notwendigkeit eines Reloads von Apache bei Änderungen an den Website-Einstellungen beseitigt. Früher erforderte das Hinzufügen einer Domain oder das Ändern der PHP-Version durch einen Kunden einen obligatorischen Reload von Apache, was zu Verzögerungen bei den Antworten führte und die Leistung der Websites beeinträchtigte.

Wir haben Reloads durch die Erstellung dynamischer Konfigurationen eliminiert. Dank mpm-itk (einem Apache-Modul) wird jeder Prozess von einem separaten Benutzer ausgeführt, was das Sicherheitsniveau erhöht. Diese Methode ermöglicht es, Benutzerdaten und document_root von Nginx an Apache2 zu übermitteln. Dadurch enthält Apache keine statischen Konfigurationen der Websites mehr, sondern erhält sie dynamisch, sodass Reloads nicht mehr notwendig sind.

Apache & Nginx. Durch eine Kette verbunden
Konfiguration des Shared-Hosting-Modells

Und was ist mit Docker?

Viele Unternehmen sind auf containerbasierte Systeme umgestiegen. Timeweb prüft derzeit die Möglichkeit eines solchen Übergangs. In jedem Lösungskonzept gibt es zweifellos Vor- und Nachteile.

Trotz der unbestreitbaren Vorteile bietet das Containersystem dem Benutzer weniger Ressourcen. Bei Timeweb hat der Benutzer durch das beschriebene Hosting-Modell keine Einschränkungen beim Arbeitsspeicher. Er erhält mehr Ressourcen als im Container. Zudem kann der Benutzer mehr Apache-Module laden.

Timeweb betreut etwa 500.000 Websites. Wir tragen eine große Verantwortung und nehmen keine sofortigen, unbegründeten Änderungen an der komplexen Architektur vor. Die Kombination aus Apache & Nginx ist zuverlässig und bewährt. In dieser Hinsicht streben wir maximale Leistung durch einzigartige Konfigurationen an.

Für eine qualitativ hochwertige und schnelle Ausführung einer Vielzahl von Websites ist es erforderlich, eine standardisierte und dynamische Konfiguration von Apache und Nginx zu verwenden. Diese ermöglicht eine einfache und schnelle Verwaltung einer großen Anzahl von ähnlichen Servern.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster