Dieser Beitrag ist Teil unserer Reihe Cloud Computing Foundations. Vertiefen Sie Ihre Kenntnisse in unserem Zertifizierungskurs Einführung in Cloud Computing .
Vielleicht sind Sie mit diesem Konzept bereits vertraut. Erinnern Sie sich an das Client/Server-Modell? Webserver sind nur eine Komponente dieses Modells - der Server.
Grundsätzlich speichert und liefert ein Webserver Websites und Webanwendungen. Webserver bestehen aus Hardware und Software, die zusammenarbeiten, um den Austausch von Daten zu erleichtern.
Die Hardwarekomponente eines Webservers bezieht sich auf den physischen oder virtuellen Computer, auf dem die Dateien und Komponenten der Website gespeichert sind. Dazu gehört alles von statischen HTML-Dokumenten, Textdateien, Bildern und Videos bis hin zu komplexeren dynamischen Skripten. Wenn Sie z. B. eine Website mit einem Video auf der Startseite besuchen, wird dieses Video auf der Hardware des Webservers gespeichert.
Die Softwarekomponente eines Webservers ist für die Steuerung des Zugriffs der Benutzer auf die auf dem Server gespeicherten Dateien verantwortlich. Dies geschieht durch die Verwaltung der Anfragen, die von Webbrowsern und anderen mit dem Internet verbundenen Geräten eingehen. Die auf dem Webserver installierte Software ermöglicht es Ihnen, Websites in Ihrem Webbrowser anzuzeigen.
Beginnen wir mit den Komponenten, die Webserver ausmachen.
Hypertext-Übertragungsprotokoll (HTTP)
HTTP ermöglicht Webservern die Bereitstellung von Websites und Webanwendungen für die Nutzer, damit diese auf Inhalte im Internet zugreifen und diese ansehen können.
Wenn Sie einen Webbrowser verwenden, um auf eine Website zuzugreifen, sendet Ihr Webbrowser eine Anfrage an den Webserver, der diese Website hostet. Diese Anfrage hat die Form einer HTTP-Nachricht. Der Webserver empfängt und verarbeitet die Anfrage und ruft die angeforderte Ressource von seinen Hardware- und Softwarekomponenten ab.
![](https://www.linode.com/wp-content/uploads/2023/09/HTTP_diagram-1064x559.png)
Rechts in der obigen Abbildung ist zu sehen, dass der Webserver über HTTP eine Nachricht an einen Webbrowser sendet. Um eine Website anzufordern, können wir einfach ihre URL in die Adressleiste des Browsers eingeben. Der Browser ordnet diese URL dann einer IP-Adresse zu, die den physischen Standort des Servers darstellt, auf dem die Website gespeichert ist. Wenn der Server unter dieser IP-Adresse gefunden wird, empfängt die Webserver-Software die Anfrage und sendet die gewünschte Website zurück. Wenn wir also "www.example.com" in den Browser eintippen, würde der Webserver die Website für "www.example.com" zurücksenden.
Selbst-Hosting vs. Hosting-Anbieter
Wenn es um das Hosting Ihrer Webanwendung geht, haben Sie die Wahl zwischen der Nutzung eines Hosting-Providers oder der Einrichtung eines eigenen Servers auf Ihrem Heimcomputer. Privatpersonen hosten oft selbst, aber für Organisationen, die wichtige Dienste anbieten, bietet ein Hosting-Anbieter viel mehr Schutz.
Bei einem Hosting-Anbieter können Sie die Vorteile von Hochgeschwindigkeitsservern und -netzen nutzen. Ein Hosting-Anbieter ist auch in der Lage, zuverlässig mit schwankendem Stromverbrauch umzugehen und vor möglichen Ausfällen zu schützen. Der wichtigste Grund, warum wir Hosting-Anbieter für wichtige Dienste nutzen, ist jedoch, dass wir sicherstellen wollen, dass private Informationen nicht an die Öffentlichkeit gelangen.
Web-Server-Software
Webserver-Software ist das Herzstück einer jeden Website oder Webanwendung. Sie ermöglicht es uns, den Nutzern Webinhalte über das Internet zur Verfügung zu stellen. Wenn wir eine Website einrichten und unsere Server konfigurieren, brauchen wir Software, damit alles funktioniert.
Was die Software betrifft, so dominieren zwei Lösungen den Markt: Apache und NGINX. Wir gehen hier auf diese beiden Lösungen ein, aber es ist erwähnenswert, dass es noch andere Optionen gibt, darunter IIS und Lighttpd, jede mit einzigartigen Vorteilen und Herausforderungen.
Apache
Apache ist eine weit verbreitete Webserver-Software, die sich ideal für das Hosten dynamischer Inhalte eignet, z. B. für E-Commerce-Sites oder Foren. Er kann auf mehreren Plattformen ausgeführt werden, darunter Windows, macOS und Linux. Es gibt ihn seit etwa 1995 und er ist einer der ältesten und am weitesten verbreiteten Webserver auf dem Markt.
Apache ist in der Lage, eine Vielzahl von Webprotokollen zu verarbeiten, darunter HTTP, HTTPS und FTP, und kann auf vielen verschiedenen Betriebssystemen ausgeführt werden, darunter Windows, Linux und macOS. Es ist in hohem Maße anpassbar und verfügt über verschiedene Module, mit denen zusätzliche Funktionen wie Unterstützung für dynamische Inhalte, Authentifizierung und Caching hinzugefügt werden können. Er wurde speziell für die Verarbeitung dynamischer Inhalte innerhalb des Servers selbst entwickelt, unabhängig von anderen Serverkomponenten.
Apache hat ein "Eine-Verbindung-pro-Prozess"-Modell. Das Modell "Eine Verbindung pro Prozess" ist ein traditioneller Ansatz für den Aufbau von Webservern, bei dem jede Kundenverbindung von einem eigenen Prozess oder Thread bearbeitet wird. Dieser Prozess oder Thread ist für die Verwaltung der Client-Verbindung und die Bearbeitung der Anfragen verantwortlich, bis die Verbindung geschlossen wird. Da Apache dieses Modell verwendet, wird die Serverleistung erheblich beeinträchtigt, wenn die Anzahl der gleichzeitigen Verbindungsanfragen die Anzahl der Prozesse übersteigt.
Eines der Hauptmerkmale von Apache ist die Unterstützung mehrerer virtueller Hosts auf einem einzigen Server, so dass Websites Ressourcen gemeinsam nutzen können, ohne ihre individuellen Konfigurationen zu verändern. Apache ist außerdem sehr erweiterbar, da eine große Gemeinschaft von Entwicklern zusätzliche Module und Plugins erstellt und wartet, um die Funktionalität zu erweitern.
NGINX
Auf der anderen Seite, NGINX (sprich: Engine X) ist für die Bereitstellung statischer Inhalte wie Bilder und Videos optimiert und wird wegen seiner Fähigkeit, eine große Anzahl gleichzeitiger Client-Verbindungen zu verarbeiten, sehr geschätzt. NGINX wird wegen seiner Fähigkeit, die Bereitstellung von Inhalten im Web zu verbessern, sehr geschätzt.
NGINX wurde mit einem asynchronen, ereignisgesteuerten Modell erstellt. Lassen Sie uns diese Konzepte einen Moment lang durchgehen.
Wir verwenden asynchrone Modelle, wenn ein System viele gleichzeitige Anfragen bearbeiten muss, z. B. bei Webservern, Netzwerkkommunikation und Datenbankverwaltung. Durch die Verwendung eines asynchronen Programmiermodells können diese Systeme eine bessere Leistung und Skalierbarkeit erreichen und das Risiko des Blockierens und Einfrierens verringern.
Ein ereignisgesteuertes Modell wird durch Ereignisse im System gesteuert und folgt nicht einer vorher festgelegten Abfolge von Schritten.
Mit einem asynchronen und ereignisgesteuerten Modell kann ein System also mehrere Aufgaben und Ereignisse gemeinsam bearbeiten, ohne die Verarbeitung anderer Aufgaben zu blockieren.
Aufgrund seiner Architektur kann NGINX keine dynamischen Inhalte, wie z. B. PHP, verarbeiten. Er muss sie an einen externen Prozessor zur Ausführung weitergeben. Aus diesem Grund eignet sich NGINX besser für statische Inhalte, Reverse Proxy, Lastausgleich, Mail Proxy und HTTP-Caching. NGINX wird auch für Linux-Systeme empfohlen.
NGINX und Apache gemeinsam nutzen
NGINX und Apache werden häufig zusammen verwendet. Auf diese Weise können wir die Stärken jedes Servers nutzen und gleichzeitig seine Grenzen überwinden.
![](https://www.linode.com/wp-content/uploads/2023/09/NGINX_Apache_Diagram-1064x559.png)
Eine der gebräuchlichsten Methoden zur Integration von Apache und NGINX besteht darin, NGINX vor Apache zu platzieren, um alle eingehenden HTTP-Anfragen zu bearbeiten, wie in der obigen Abbildung zu sehen. Bei dieser Konfiguration werden alle eingehenden HTTP-Anfragen an NGINX weitergeleitet, das dann Anfragen für dynamische Inhalte an Apache weiterleitet, während es Anfragen für statische Inhalte selbst bedient.
Indem wir NGINX vor Apache platzieren, nutzen wir die Fähigkeit von NGINX, mit seinem asynchronen, ereignisgesteuerten Modell große Mengen an gleichzeitigen Verbindungsanfragen zu verarbeiten. Dies trägt zur Entlastung von Apache bei, indem es die Anzahl der offenen Threads und Prozesse reduziert, die für die Bearbeitung von Anfragen erforderlich sind, was andernfalls die Leistung von Apachebeeinträchtigen kann.
Die Reverse-Proxy-Konfiguration bietet auch zusätzliche Vorteile, wie z. B. Lastausgleich und verbesserte Sicherheit. NGINX kann Anfragen auf mehrere Apache Server verteilen, wodurch die Last ausgeglichen wird und verhindert wird, dass ein einzelner Server überlastet wird. Außerdem kann NGINX als Puffer zwischen dem Internet und dem Webserver fungieren und so einen zusätzlichen Schutz vor Angriffen bieten.
Erwerben Sie die Fähigkeiten, um im Cloud Computing erfolgreich zu sein, indem Sie unseren Zertifizierungskurs Introduction to Cloud Computing besuchen.
Kommentare (1)
Crystal clear blog, loved the explanation!