Begriff
Web Server
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Ein Programm, das auf Port 80 (HTTP) oder 443 (HTTPS) wartet.
Wenn dein Browser fragt: "Gib mir index.html", sucht der Webserver die Datei auf der Festplatte und schickt sie zurück.
Er ist der Empfangschef des Internets.
Die berühmtesten sind Nginx, Apache HTTP Server und Microsoft IIS.
Ohne Webserver keine Webseite.
Merksatz: Eine Software (oder Hardware), die HTTP-Anfragen von Clients (Browsern) entgegennimmt und Webseiten (HTML, Bilder) oder Daten an sie ausliefert.
Lernbruecke für Anfänger
Wenn du bei Web Server ganz neu startest, denke zuerst nicht an Fachwörter, sondern an die Alltagssituation: Wie HTTP-Anfragen entgegengenommen werden. Der Begriff beschreibt einen klaren Baustein im größeren Ablauf. Frage dich immer: Was ist der Eingang, was passiert in der Mitte, und woran erkenne ich am Ende, dass es funktioniert hat?
Ein guter Einstieg ist, den Begriff in einem Satz zu erklären, danach ein reales Beispiel zu nennen und erst dann die Technikdetails zu lernen. So entsteht kein reines Auswendiglernen, sondern ein mentales Modell.
Installation (Ubuntu):
sudo apt install nginx
Konfiguration (/etc/nginx/sites-available/default):
server {
listen 80;
root /var/www/html; # Hier liegen die Dateien
index index.html;
}
Du legst deine index.html nach /var/www/html, und die Welt kann sie sehen.
Praxisroutine
In der Praxis lernst du Web Server, indem du mit einem kleinen, kontrollierten Beispiel beginnst. Baue zuerst einen Minimalfall, prüfe das Ergebnis, veraendere genau eine Sache und beobachte, was sich ändert. Notiere dir Eingabe, Aktion, Ausgabe und typischen Fehler.
Übung: Erstelle ein Beispiel aus deinem Alltag, fuehre den Ablauf gedanklich Schritt für Schritt durch und markiere die Stelle, an der du Feedback oder ein Log brauchst. Wenn du diese Stelle benennen kannst, verstehst du den Begriff praktisch.
1. Web Server vs. Application Server
Die Grenze verschwimmt, aber klassisch:
- Web Server (Nginx): Liefert statische Inhalte (Bilder, CSS, HTML). Extrem schnell. Kann keinen Python/PHP-Code ausführen.
- App Server (Gunicorn, Tomcat): Führt Code aus (Logik, DB-Abfragen). Generiert HTML dynamisch.
- Setup: Nginx nimmt die Anfrage an. Wenn es ein Bild ist -> liefert es selbst. Wenn es Logik braucht -> leitet es an Gunicorn weiter (Reverse Proxy).
2. Event-Driven (Nginx) vs. Process-Based (Apache)
Warum hat Nginx Apache verdrängt?
- Apache (Prefork): Startet für jeden User einen neuen Prozess/Thread. Braucht viel RAM. Bei 10.000 Usern stürzt er ab (C10k Problem).
- Nginx (Event Loop): Ein einziger Prozess bedient tausende User asynchron ("Non-blocking I/O"). Extrem speichereffizient. (Apache kann heute auch Events, aber Nginx war der Pionier).
3. Virtual Hosts (SNI)
Ein Webserver kann 100 verschiedene Webseiten hosten (google.com, gmail.com, youtube.com) auf einer IP-Adresse.
Woher weiß er, welche Seite der User will?
Er schaut in den Host-Header der HTTP-Anfrage (oder SNI im TLS Handshake).
"Aha, du willst kekse.de. Hier ist der Ordner /var/www/kekse."
1. Compression (GZIP & Brotli)
Ein Webserver schickt Text-Dateien (HTML/JS) fast nie im Originalzustand. Er komprimiert sie "on the fly".
- GZIP: Der Klassiker. Spart ca. 70% Dateigröße.
- Brotli (von Google): Neuer und effizienter als GZIP, braucht aber mehr CPU-Leistung beim Komprimieren.
Der Browser schickt den Header
Accept-Encoding: br, gzip, und der Webserver entscheidet: "Ich habe genug CPU-Power, ich schicke dir das hocheffiziente Brotli-Paket." Das reduziert die Ladezeit massiv, besonders bei mobilen Datenverbindungen.
2. Layer 7 Load Balancing
Webserver wie Nginx werden oft nur als "Türsteher" vor einer ganzen Armee von Servern genutzt. Sie machen Layer 7 Load Balancing: Nginx schaut in den Request: "Willst du ein Bild? Geh zu Server A. Ist es ein Login-Versuch? Geh zum teuren Server B." Außerdem können sie SSL-Termination machen: Der Webserver übernimmt das extrem rechenintensive Entschlüsseln der HTTPS-Verbindung. Die internen App-Server dahinter bekommen dann schnelles, unverschlüsseltes HTTP. Das schont die Ressourcen der App-Server.
3. Thundering Herd Problem
Wenn du einen sehr beliebten Blog-Post hast und der Cache des Webservers abläuft, passiert folgendes: 1.000 User fragen gleichzeitig nach der Seite. Der Webserver merkt: "Oh, Cache leer!", und leitet 1.000 Anfragen gleichzeitig an die langsame Datenbank weiter. Die DB bricht zusammen. Profis konfigurieren ihre Webserver daher mit Locking oder Stale-while-revalidate: Wenn der Cache abläuft, darf nur einer zur DB gehen und die Seite neu bauen. Die restlichen 999 User bekommen solange noch kurz die "alte" (stale) Seite angezeigt.
Quick-Check
Was ist Caddy?
Ein moderner Webserver (in Go geschrieben). Sein Killer-Feature: Er macht HTTPS (Let's Encrypt Zertifikate) vollautomatisch. Nginx muss man dafür konfigurieren.Statisch vs. Dynamisch?
Statisch: Die Datei liegt fertig auf der Platte. Dynamisch: Die Seite wird im Moment der Anfrage "gebaut" (z. B. News-Feed). Webserver lieben Statik.Keep-Alive?
Eine Optimierung. Die TCP-Verbindung bleibt nach dem ersten Bild offen, damit das zweite Bild schneller geladen werden kann (kein neuer Handshake). Der Webserver verwaltet diese offenen Leitungen.