Für viele Unternehmen ist Nginx + Apache + PHP ein sehr typisches und weit verbreitetes Bundle, und Timeweb ist keine Ausnahme. Es kann jedoch interessant und lohnend sein, genau herauszufinden, wie es implementiert wird.
Die Verwendung eines solchen Pakets wird natürlich von den Bedürfnissen unserer Kunden bestimmt. Sowohl Nginx als auch Apache spielen eine besondere Rolle und lösen jeweils ein bestimmtes Problem.
Die wichtigsten Apache- Einstellungen werden in den Konfigurationsdateien von Apache selbst vorgenommen, und die Einstellungen für Client-Sites werden über die .htaccess-Datei vorgenommen... .htaccess ist eine Konfigurationsdatei, in der der Client die Regeln und das Verhalten des Webservers unabhängig konfigurieren kann. Diese Einstellung ist spezifisch für seine Site. Dank der Apache-Funktionalität können Benutzer beispielsweise den Betriebsmodus innerhalb derselben PHP-Version von mod_php in mod_cgi ändern. Sie können Weiterleitungen, SEO-Optimierung, praktische URL und einige Einschränkungen für PHP anpassen.
Nginx wird als Proxyserver zum Umleiten des Datenverkehrs an Apache und als Webserver zum Bereitstellen statischer Inhalte verwendet. Auch für Nginx haben wir Sicherheitsmodule entwickelt, mit denen wir die Daten unserer Benutzer schützen können, beispielsweise um Zugriffsrechte zu trennen.
Stellen wir uns vor, einige Benutzer besuchen die Website unseres Kunden. Zunächst geht der Benutzer zu Nginx, das statische Inhalte bereitstellt. Es passiert sofort. Beim Laden von PHP leitet Nginx die Anfrage an Apache weiter. Und Apache generiert zusammen mit PHP bereits dynamische Inhalte.
Funktionen des Apache & Nginx-Bundles in Timeweb
Unser virtuelles Hosting implementiert zwei Hauptschemata für Apache & Nginx: Shared und Dedicated .
Gemeinsames
Schema Dieses Schema wird für die meisten Benutzer verwendet. Es zeichnet sich durch seine Einfachheit und Ressourcenintensität aus: Das Shared-System verbraucht weniger Ressourcen, daher ist sein Tarif auch günstiger. Nach diesem Schema wird auf dem Server ein Nginx ausgeführt, mit dem alle Benutzeranforderungen und mehrere Apache-Instanzen bearbeitet werden können.
Das gemeinsame System hat sich seit langem verbessert: Nach und nach haben wir die Mängel behoben. Praktischerweise kann dies durchgeführt werden, ohne dass der Quellcode geändert werden muss.
Freigegebenes
Schema Spezielles Schema
Dedicated erfordert mehr Ressourcen, daher ist der Tarif für Kunden teurer. Im dedizierten Schema wird für jeden Client ein separater Apache ausgelöst. Die Ressourcen hier sind für den Kunden reserviert, sie werden ausschließlich zugewiesen. So funktioniert es: Auf dem Server befinden sich mehrere PHP-Versionen. Wir unterstützen die Versionen 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Daher wird für jede PHP-Version ein eigener Apache gestartet.
Spezielles Schema
Sicherheitszone. Zonen in Nginx konfigurieren
Zuvor haben wir viele gemeinsam genutzte Speicherzonen (Zonen) für Nginx verwendet - einen Serverblock pro Domäne. Diese Konfiguration erfordert viele Ressourcen, da für jeden Standort eine separate Zone erstellt wird. In den Nginx-Einstellungen sind die meisten Websites jedoch vom gleichen Typ, sodass sie dank der Verwendung von Kartenanweisungen im ngx_http_map_module , mit denen Sie Zuordnungen festlegen können, in einer Zone platziert werden können . Zum Beispiel haben wir eine Zonenvorlage, für die wir Variablen angeben müssen: Pfad zur Site, PHP-Version, Benutzer. Das erneute Lesen der Nginx-Konfiguration, dh das Neuladen, wurde beschleunigt.
Diese Konfiguration sparte RAM-Ressourcen erheblich und ließ Nginx schneller arbeiten.
Nachladen funktioniert nicht!
Im Shared-Schema wurde die Notwendigkeit beseitigt, Apache beim Ändern der Site-Einstellungen neu zu laden (neu zu laden). Zuvor war, wenn ein Client eine Domain hinzufügen oder die PHP-Version ändern wollte, ein obligatorisches Neuladen von Apache erforderlich, was zu Verzögerungen bei den Antworten führte und die Leistung der Site beeinträchtigte.
Wir haben das Nachladen beseitigt, indem wir dynamische Konfigurationen erstellt haben. Dank mpm-itk (Apache-Modul) wird jeder Prozess von einem separaten Benutzer ausgeführt, was die Sicherheitsstufe erhöht. Mit dieser Methode können Sie Daten über den Benutzer und seine document_root von Nginx nach Apache2 übertragen. Daher enthält Apache keine Site-Konfigurationen, sondern empfängt sie dynamisch, und ein erneutes Laden ist nicht mehr erforderlich.
Gemeinsame Schemakonfiguration
Was ist mit Docker?
Viele Unternehmen sind auf ein containergestütztes System umgestiegen. Timeweb erwägt derzeit die Möglichkeit eines solchen Übergangs. Natürlich hat jede Lösung Vor- und Nachteile.
Neben den unbestreitbaren Vorteilen bietet das Containersystem dem Benutzer weniger Ressourcen. In Timeweb hat der Benutzer dank des beschriebenen Hosting-Betriebsschemas keine Speicherbeschränkung. Es erhält mehr Ressourcen als der Container. Darüber hinaus kann der Benutzer weitere Apache-Module laden.
Timeweb betreibt rund 500.000 Websites. Wir tragen viel Verantwortung und nehmen keine sofortigen, ungerechtfertigten Änderungen an einer komplexen Architektur vor. Das Apache & Nginx-Bundle ist zuverlässig und erprobt. Wir sind wiederum bestrebt, durch einzigartige Konfigurationen maximale Leistung zu erzielen.
Für eine qualitativ hochwertige und schnelle Arbeit mit einer großen Anzahl von Websites müssen Sie die Vorlage und die dynamische Konfiguration von Apache und Nginx verwenden. Sie können damit einfach und schnell eine große Anzahl ähnlicher Server verwalten.