Reverse proxies

Revers Proxy schematisch

© 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

Bekannte Vertreter

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

Fragen? Feedback?