Reverse proxies
© 2021 Jan Dittberner
Wichtige Funktionen
- Weiterleitung auf dahinterliegende Systeme
- Performanceoptimierungen
- TLS-Terminierung
- Loadbalancing
Warum?
- schnelle Rekonfiguration ohne Restart langsamer Backend-Anwendungen
- einheitliche Konfiguration von TLS-Terminierung
- bessere Security z.B. durch URL-Filterung, Beschränkung von Zugriffen,
Rate-Limiting
- Caching und direkte Auslieferung von statischen Resourcen (Bilder, CSS,
...)
- (Pre-)Authentifizierung, z.B. Kerberos, Client-Zertifikate, ...
- Zusammenstellung von Content aus mehreren Teilanwendungen
Apache httpd
- bewährte, ausgereifte Software, gibt es seit 1995
- Apache Software Foundation
Apache httpd
Charakteristika
- mehrere Processing Module (MPM) zur Auswahl (Standard: prefork)
- Integration von PHP, Perl, usw. über Module
- in (fast) allen OS-Distributionen enthalten
Apache httpd
Vorteile 👍
- viele Tutorials
- starke Rewrite-Engine
- Unterstützung für .htaccess zum Überschreiben von Einstellungen
Apache httpd
Nachteile 👎
- viele schlechte Tutorials
- Unterstützung für .htaccess zum Überschreiben von Einstellungen
- relativ langsam
- relative speicherhungrig
nginx
- inzwischen auch sehr ausgereift, gibt es seit 2004
- ursprünglich von Igor Sysoev entwickelt, um Apache Performance-Probleme zu lösen
- laut Netcraft seit April 2019 Marktführer
- kommerziell supported durch Nginx, Inc., jetzt Teil von F5
- kommerzielle Variante mit Zusatzfunktionen
nginx
Characteristika
- asynchrone, Event-basierte Request-Verarbeitung
- Skriptsprachenanbindung per FastCGI, uwsgi, scgi oder direkt per http(s)
- in vielen OS-Distributionen enthalten
nginx
Vorteile 👍
- sehr schnell
- geringer Speicherbedarf
- Support für E-Mail (IMAP, SMTP) sowie TCP und UDP Proxying
- Support für Streaming
nginx
Nachteile 👎
- weniger Dokumentation als für Apache httpd
- weniger mächtiges Rewriting als Apache httpd
- keine .htaccess-Dateien
Microsoft IIS
Microsoft® Windows® only
🤷
Cloud native reverse proxies
Vertreter: Traefik, Envoy
- dynamische Konfiguration (z.B. aus Kubernetes Configmaps, etcd, Docker
Labels, Consul, ...)
- Support für Prometheus, Tracing, etc.
- noch wenig Erfahrung vorhanden (bei uns)
- auf stark dynamische Anwendungen ausgelegt
- eingebautes Traffic-Routing, Failover, etc.
- brauchen hohen Grad an Automatisierung für Konfiguration