2012-10-21 03:14:50 +02:00
<!doctype html>
2016-03-20 18:50:14 +01:00
< html >
2021-02-26 19:36:05 +01:00
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" >
< title > reveal.js< / title >
< link rel = "stylesheet" href = "dist/reset.css" >
< link rel = "stylesheet" href = "dist/reveal.css" >
< link rel = "stylesheet" href = "dist/theme/black.css" id = "theme" >
<!-- Theme used for syntax highlighted code -->
< link rel = "stylesheet" href = "plugin/highlight/monokai.css" id = "highlight-theme" >
< / head >
< body >
< div class = "reveal" >
< div class = "slides" >
< section >
< section >
< h1 class = "r-fit-text" > Reverse proxies< / h1 >
< p >
< img src = "revproxy.svg" width = "466" height = "338" alt = "Revers Proxy schematisch" / >
< / p >
< p class = "justify-end" >
< small > © 2021 Jan Dittberner< / small >
< / p >
< / section >
< section data-markdown >
< textarea data-template >
> Ein Reverse-Proxy ist ein Proxy in einem Rechnernetz, der Ressourcen für einen externen Client von einem oder mehreren internen Servern holt. Die Umsetzung der Adresse ist
> atypisch und der Richtung des Aufrufes entgegengesetzt (deutsch „umgekehrter Proxy“). ...
Quelle: [Wikipedia](https://de.wikipedia.org/wiki/Reverse_Proxy)
< / textarea >
< / section >
< section data-markdown >
< textarea data-template >
> ... Die wahre Adresse des internen Zielsystems bleibt dem externen Client verborgen. Das
> unterscheidet ihn vom typischen (Forward-)Proxy, der mehreren Clients eines internen (in sich abgeschlossenen) Netzes den Zugriff auf ein externes Netz gewährt.
Quelle: [Wikipedia](https://de.wikipedia.org/wiki/Reverse_Proxy)
< / textarea >
< / section >
< section >
< h2 class = "r-fit-text" > Wichtige Funktionen< / h2 >
< ul >
< li class = "fragment fade-in" > Weiterleitung auf dahinterliegende Systeme< / li >
< li class = "fragment fade-in" > Performanceoptimierungen< / li >
< li class = "fragment fade-in" > TLS-Terminierung< / li >
< li class = "fragment fade-in" > Loadbalancing< / li >
< / ul >
< / section >
< section >
< h2 > Warum?< / h2 >
< ul >
< li class = "fragment fade-in" > schnelle Rekonfiguration ohne Restart langsamer Backend-Anwendungen
< / li >
< li class = "fragment fade-in" > einheitliche Konfiguration von TLS-Terminierung< / li >
< li class = "fragment fade-in" > bessere Security z.B. durch URL-Filterung, Beschränkung von Zugriffen,
Rate-Limiting
< / li >
< li class = "fragment fade-in" > Caching und direkte Auslieferung von statischen Resourcen (Bilder, CSS,
...)
< / li >
< li class = "fragment fade-in" > (Pre-)Authentifizierung, z.B. Kerberos, Client-Zertifikate, ...< / li >
< li class = "fragment fade-in" > Zusammenstellung von Content aus mehreren Teilanwendungen< / li >
< / ul >
< / section >
< / section >
< section >
< section >
< h2 class = "r-fit-text" > Bekannte Vertreter< / h2 >
< / section >
< section data-markdown >
< textarea data-template >
## Bekannte Vertreter
### klassisch
- [Apache httpd](https://httpd.apache.org/)
- [nginx](https://nginx.org/)
- [Microsoft IIS](https://www.iis.net/)
< / textarea >
< / section >
< section data-markdown >
< textarea data-template >
## Bekannte Vertreter
### Cloud native
- [Traefik](https://traefik.io/)
- [Envoy](https://www.envoyproxy.io/)
< / textarea >
< / section >
< / section >
< section >
< section >
< h2 > Apache httpd< / h2 >
< img src = "apache_logo.svg" width = "97" height = "195" >
< ul >
< li class = "fragment fade-in" > bewährte, ausgereifte Software, gibt es seit 1995< / li >
< li class = "fragment fade-in" > Apache Software Foundation< / li >
< / ul >
< / section >
< section >
< h2 > Apache httpd< / h2 >
< h3 > Charakteristika< / h3 >
< ul >
< li class = "fragment fade-in" > mehrere Processing Module (MPM) zur Auswahl < small > (Standard: prefork)< / small > < / li >
< li class = "fragment fade-in" > Integration von PHP, Perl, usw. über Module< / li >
< li class = "fragment fade-in" > in (fast) allen OS-Distributionen enthalten< / li >
< / ul >
< / section >
< section >
< h2 > Apache httpd< / h2 >
< h3 > Vorteile 👍< / h3 >
< ul >
< li class = "fragment fade-in" > viele Tutorials
< li class = "fragment fade-in" > starke Rewrite-Engine
< li class = "fragment fade-in" > Unterstützung für .htaccess zum Überschreiben von Einstellungen
< / ul >
< / section >
< section >
< h2 > Apache httpd< / h2 >
< h3 > Nachteile 👎< / h3 >
< ul >
< li class = "fragment fade-in" > viele schlechte Tutorials< / li >
< li class = "fragment fade-in" > Unterstützung für .htaccess zum Überschreiben von Einstellungen< / li >
< li class = "fragment fade-in" > relativ langsam< / li >
< li class = "fragment fade-in" > relative speicherhungrig< / li >
< / ul >
< / section >
< / section >
< section >
< section >
< h2 > nginx< / h2 >
< img src = "nginx_logo.svg" width = "480" height = "100" / >
< ul >
< li class = "fragment fade-in" > inzwischen auch sehr ausgereift, gibt es seit 2004< / li >
< li class = "fragment fade-in" > ursprünglich von Igor Sysoev entwickelt, um Apache Performance-Probleme zu lösen< / li >
< li class = "fragment fade-in" > laut Netcraft seit April 2019 Marktführer< / li >
< li class = "fragment fade-in" > kommerziell supported durch Nginx, Inc., jetzt Teil von F5< / li >
< li class = "fragment fade-in" > kommerzielle Variante mit Zusatzfunktionen< / li >
< / ul >
< / section >
< section >
< h2 > nginx< / h2 >
< h3 > Characteristika< / h3 >
< ul >
< li class = "fragment fade-in" > asynchrone, Event-basierte Request-Verarbeitung< / li >
< li class = "fragment fade-in" > Skriptsprachenanbindung per FastCGI, uwsgi, scgi oder direkt per http(s)< / li >
< li class = "fragment fade-in" > in vielen OS-Distributionen enthalten< / li >
< / ul >
< / section >
< section >
< h2 > nginx< / h2 >
< h3 > Vorteile 👍< / h3 >
< ul >
< li class = "fragment fade-in" > sehr schnell< / li >
< li class = "fragment fade-in" > geringer Speicherbedarf< / li >
< li class = "fragment fade-in" > Support für E-Mail (IMAP, SMTP) sowie TCP und UDP Proxying< / li >
< li class = "fragment fade-in" > Support für Streaming< / li >
< / ul >
< / section >
< section >
< h2 > nginx< / h2 >
< h3 > Nachteile 👎< / h3 >
< ul >
< li class = "fragment fade-in" > weniger Dokumentation als für Apache httpd< / li >
< li class = "fragment fade-in" > weniger mächtiges Rewriting als Apache httpd< / li >
< li class = "fragment fade-in" > keine .htaccess-Dateien< / li >
< / ul >
< / section >
< / section >
< section >
< h2 > Microsoft IIS< / h2 >
< p class = "fragment fade-in-then-out" > Microsoft® Windows® only< / p >
< p class = "fragment fade-in r-fit-text" > 🤷< / p >
< / section >
< section >
< h2 > Cloud native reverse proxies< / h2 >
< h3 > Vertreter: Traefik, Envoy< / h3 >
< ul >
< li class = "fragment fade-in" > dynamische Konfiguration (z.B. aus Kubernetes Configmaps, etcd, Docker
Labels, Consul, ...)
< / li >
< li class = "fragment fade-in" > Support für Prometheus, Tracing, etc.< / li >
< li class = "fragment fade-in" > noch wenig Erfahrung vorhanden (bei uns)< / li >
< li class = "fragment fade-in" > auf stark dynamische Anwendungen ausgelegt< / li >
< li class = "fragment fade-in" > eingebautes Traffic-Routing, Failover, etc.< / li >
< li class = "fragment fade-in" > brauchen hohen Grad an Automatisierung für Konfiguration< / li >
< / ul >
< / section >
< section >
< h2 class = "r-fit-text" > Fragen? Feedback?< / h2 >
< / section >
< / div >
< / div >
< script src = "dist/reveal.js" > < / script >
< script src = "plugin/notes/notes.js" > < / script >
< script src = "plugin/markdown/markdown.js" > < / script >
< script src = "plugin/highlight/highlight.js" > < / script >
< script >
// More info about initialization & config:
// - https://revealjs.com/initialization/
// - https://revealjs.com/config/
Reveal.initialize({
hash: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [RevealMarkdown, RevealHighlight, RevealNotes]
});
< / script >
< / body >
2012-08-04 06:33:27 +02:00
< / html >