HTTP vs. L4 Routing — Wann nutze ich was?
HTTP vs. L4 Routing — Wann nutze ich was?
GateControl unterstützt zwei Routing-Typen: HTTP-Routing (Layer 7) für Domain-basiertes Routing mit allen HTTP-Features, und L4-Routing (Layer 4) für rohes TCP/UDP Port-Forwarding.
Schnellregel
Wenn der Dienst im Browser aufgerufen wird (HTTP/HTTPS), verwende HTTP-Routing. Wenn es ein Nicht-HTTP-Protokoll ist (SSH, Datenbank, Game Server), verwende L4-Routing.
Feature-Vergleich
| Feature | HTTP (Layer 7) | L4 (Layer 4) |
|---|---|---|
| Routing-Methode | Domain-basiert | Port-basiert |
| HTTPS / Let's Encrypt | Ja | Nur mit TLS Terminate |
| Compression | Ja | Nein |
| Rate Limiting | Ja | Nein |
| Auth (Basic/Route) | Ja | Nein |
| Peer ACL | Ja | Nein |
| Retry / Circuit Breaker | Ja | Nein |
| Uptime Monitoring | HTTP Check | TCP Check |
| WebSocket | Ja (Upgrade) | Ja (als TCP) |
Typische L4 Use Cases
- Minecraft Server: TCP, Port 25565, TLS: None
- SSH-Zugang: TCP, Listen Port 2222 → Target Port 22
- Datenbank: TCP, Listen Port 5433 → Target Port 5432
- Game Server (UDP): UDP, Port 27015
L4 TLS-Modi
| Modus | Beschreibung |
|---|---|
| None | Kein TLS, roher TCP/UDP Traffic |
| Passthrough | TLS wird durchgeleitet, End-to-End Verschlüsselung |
| Terminate | Caddy terminiert TLS mit Let's Encrypt, Backend bekommt unverschlüsselten TCP |
Wichtig
- L4-Routen belegen exklusive Ports (bei TLS None)
- Mehrere L4-Routen mit TLS können denselben Port teilen (SNI-basiert)
- L4-Routen haben keine HTTP-Features
WebSocket-Unterstützung
HTTP-Routen: WebSocket-Verbindungen starten als normaler HTTP-Request mit einem Connection: Upgrade Header. Caddy erkennt diesen automatisch und schaltet auf eine persistente WebSocket-Verbindung um — keine Konfiguration nötig.
L4-Routen: Da L4 den rohen TCP-Stream weiterleitet, funktioniert WebSocket auch hier — Caddy leitet die TCP-Pakete 1:1 weiter.