parent
0582f57517
commit
96d1885611
After Width: | Height: | Size: 28 KiB |
@ -1,40 +1,230 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<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>Slide 1</section>
|
||||
<section>Slide 2</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>
|
||||
<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>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1 @@
|
||||
<mxfile host="Electron" modified="2021-02-26T18:22:49.411Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.4 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" version="14.1.4" etag="7Dzpwr9utEWKFZhynZFn" type="device"><diagram id="O_EKWMdg5lbHfY7zw-BL" name="Seite-1">7VjbctowEP0aHsNgG0z8yCVpO02mTJnp5Skj7MW4EV5HlsH067uy5RuQa+OkaWtmwDparVe7Z7VrOtZknb4TLFpdoge8Y/a8tGNNO6Y5tHv0rYBdDtiOBnwReDlkVMA8+AkaLMSSwIO4ISgRuQyiJuhiGIIrGxgTArdNsSXy5lMj5sMBMHcZP0S/Bp5c5eipOazw9xD4q+LJhu3kMwvmXvsCk1A/r2NaA0d98uk1K3TpjcYr5uG2BllnHWsiEGV+t04nwJVrC7fl685vmS3tFhDKhyz4Gg3Hsw/pR4Zs+uWTb8WXN7MTvcsN4wkU27A56RsvkdQqt3MU2Yx9kyhTx7TPZXbVIdvXv9naRQHMk8XJKIp44DIZYEj6jEKGDF3sryMsf2wBZ36TuyJWEQahBHG2oS2rsBskVLq1RwOPxSvw9GAl11wLcbYAPsM4yKywpi4oPTSxASHJOH6xJ7BAKXFdExjxwFcTEiNCMZE8CGFSclI9j2mRUjmZFinL16mvUqeLy2XgQjcGQVpj/XvlQwgicJW8FHhNSnOPhxhC6QRlBqS3Rt4o+URpCrgGKXYkku6lpE5RurqDHNlWlC8Yv6qxfWDqRNNJ5pe6K6LRjebaI3jnvDTvzP+8e3XeWYP+67LOMA9CCx5VAz1EIVfoY8j4WYWOsyO+DG4lc4EqJFmYf4CUO13aWCKxSYKme4nG59lVzhRlxyy9roy62+e0B0yEC3dttqimTPgg76sBh0EUwCl5Nk1Dnj8k/SeExE2IwZ52b8sRIb+L3TcanPS6PWKrRr4rPnQHhlMA01QzJB/t6qMZJRq5SyVnBr5GlJ3fjHK2dCQE29UEsoMxrmmeKaB2Alh7lafvNHuUe+StU2OPYbkFFd/KrTydgqb1h1PwNehims/Bl8MAm80AG8awqSI3TK+qIv/SxCvsapV4RTCOdEEHLcpT2qLPoOo90LKZwHR3a7dzrDH6qzugLSyu8vsWu5+Bsd919w66n/7pke5nLyOer9QO/6Fzzn7gOWfcEsQX6n7sdk+AUbgFal7FG0v9o0l+/Dx4aOq7HBMv7mKoFF8lcaupb+6/cBvGkRduxzpM/mG/JaaZZrtMm0tKF5dWnQcc4jfGtxZKjYuhC5GMux66yTrfSnsv2qe9gl+acc6RWmMfqTWPpxsNq/8s806o+l/YOvsF</diagram></mxfile>
|
After Width: | Height: | Size: 13 KiB |
Loading…
Reference in new issue