Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einführung in YARP
YARP (Yet Another Reverse Proxy) ist eine hochgradig anpassbare Reverseproxybibliothek für .NET. Es wurde entwickelt, um ein robustes, flexibles, skalierbares, sicheres und einfaches Proxyframework bereitzustellen. YARP hilft Entwicklern, leistungsstarke und effiziente Reverseproxylösungen zu erstellen, die auf ihre spezifischen Anforderungen zugeschnitten sind.
Aufgaben eines Reverseproxy
Ein Reverseproxy ist ein Server, der sich zwischen Clientgeräten und Back-End-Servern befindet. Er leitet Clientanforderungen an den entsprechenden Back-End-Server weiter und gibt dann die Antwort des Servers an den Client zurück. Ein Reverse-Proxy bietet mehrere Vorteile:
Routing: Leitet Anforderungen an verschiedene Back-End-Server basierend auf vordefinierten Regeln an, z. B. URL-Muster oder Anforderungsheader. Es werden beispielsweise die
/images-,/api- und/db-Anforderungen an Bild-, API- und Datenbankserver weitergeleitet.Lastenausgleich: Verteilt eingehenden Datenverkehr über mehrere Back-End-Server, um zu verhindern, dass ein bestimmter Server überlastet wird. Die Verteilung erhöht die Leistung und Zuverlässigkeit.
Skalierbarkeit: Durch die Verteilung des Datenverkehrs über mehrere Server hilft ein Reverseproxy, Apps so zu skalieren, dass mehr Benutzer und höhere Lasten verarbeitet werden. Backend-Server wird skaliert (hinzugefügt oder entfernt), ohne den Client zu beeinträchtigen.
SSL/TLS-Beendigung: Entlastet die Backend-Server von den TLS-Verschlüsselungs- und Entschlüsselungsprozessen und reduziert somit ihre Arbeitsauslastung.
Verbindungsabstraktion, Entkoppelung und Kontrolle über den URL-Raum: Eingehende Anfragen von externen Clients und ausgehende Antworten vom Backend sind unabhängig. Diese Unabhängigkeit ermöglicht unterschiedliche Möglichkeiten:
- Versionen von HTTP, dh HTTP/1.1, HTTP/2, HTTP/3. Der Proxy kann HTTP-Versionen aktualisieren oder herabstufen.
- Verbindungslebensdauern, die es ermöglichen, langlebige Verbindungen im Back-End zu haben und gleichzeitig kurze Clientverbindungen aufrechtzuerhalten.
- Kontrolle über DEN URL-Bereich: Eingehende URLs können vor der Weiterleitung an das Back-End transformiert werden. Dadurch werden die externen URLs von der Zuordnung zu internen Diensten abstrahiert. Interne Dienstendpunkte können sich ändern, ohne sich auf externe URLs zu auswirken.
Sicherheit: Interne Dienstendpunkte können vor externen Zugriffen verborgen werden, um sich vor einigen Arten von Cyberangriffen zu schützen, wie z. B. DDoS-Angriffen.
Zwischenspeichern: Häufig angeforderte Ressourcen können zwischengespeichert werden, um die Last auf Back-End-Servern zu reduzieren und die Reaktionszeiten zu verbessern.
Versionsverwaltung: Verschiedene Versionen einer API können mit unterschiedlichen URL-Zuordnungen unterstützt werden.
Vereinfachte Wartung: Reverseproxys können SSL/TLS-Beendigung und andere Aufgaben verarbeiten und die Konfiguration und Wartung von Back-End-Servern vereinfachen. Beispielsweise können SSL-Zertifikate und Sicherheitsrichtlinien auf Reverseproxyebene statt auf jedem einzelnen Server verwaltet werden.
So behandelt ein Reverseproxy HTTP
Ein Reverseproxy verarbeitet HTTP-Anforderungen und -Antworten wie folgt:
- Empfangen von Anforderungen: Der Reverseproxy überwacht an bestimmten Ports und Endpunkten eingehende HTTP-Anforderungen von Clients.
- Beenden von Verbindungen: Die eingehenden HTTP-Verbindungen werden am Proxy beendet, und neue Verbindungen werden für ausgehende Anforderungen an Ziele verwendet.
- Routinganforderungen: Basierend auf vordefinierten Routingregeln und -konfigurationen bestimmt der Reverseproxy, welcher Back-End-Server oder Cluster von Servern die Anforderung verarbeiten soll.
- Weiterleitungsanforderungen: Der Reverseproxy leitet die Clientanforderung an den entsprechenden Back-End-Server weiter, wobei der Pfad und die Header bei Bedarf transformiert werden.
- Verbindungspooling: Die ausgehenden Verbindungen werden gepuffert, um den Verbindungsaufwand zu reduzieren und die HTTP 1.1-Wiederverwendung sowie parallele Anfragen mit HTTP/2 und HTTP/3 optimal zu nutzen.
- Verarbeitungsantworten: Der Back-End-Server verarbeitet die Anforderung und sendet eine Antwort an den Reverseproxy zurück.
- Zurückgeben von Antworten: Der Reverseproxy empfängt die Antwort vom Back-End-Server und leitet sie an den Client weiter und führt alle erforderlichen Antworttransformationen aus.
Dieser Prozess stellt sicher, dass der Client nicht direkt mit dem Back-End-Server, sondern mit dem Reverseproxy interagiert, was die Vorteile des Lastenausgleichs, der Sicherheit, der Versionsverwaltung und vieles mehr bietet.
Gründe für die Wahl von YARP über andere Proxys
YARP bietet mehrere einzigartige Vorteile, die es für Entwickler zu einer attraktiven Wahl machen:
- Anpassung: YARP ist hochgradig anpassbar, sodass Entwickler den Proxy auf ihre spezifischen Anforderungen mit minimalem Aufwand anpassen können.
- Integration in .NET: Basierend auf ASP.NET Core ist YARP nahtlos in das .NET-Ökosystem integriert, sodass es eine ideale Wahl für .NET-Entwickler ist.
- Erweiterbarkeit: YARP bietet eine umfangreiche Gruppe von Erweiterbarkeitspunkten, sodass Entwickler benutzerdefinierte Logik und Features nach Bedarf mit vertrautem C#-Code hinzufügen können.
- Skalierbarkeit: Mit der Erweiterungsmöglichkeit des direkten Weiterleitens kann YARP skaliert werden, um Domänennamen und Backend-Skalierung zu unterstützen, die bei den meisten Reverse-Proxys nicht machbar sind.
- Aktive Entwicklung: YARP wird aktiv von Microsoft entwickelt, um sicherzustellen, dass es auf dem neuesten Stand der Technik und der bewährten Verfahren bleibt.
- Umfassende gepflegte Dokumentation: YARP verfügt über umfangreiche Dokumentationen und Beispiele und erleichtert den Einstieg und die Implementierung erweiterter Features.
- Open Source. YARP und das YARP-Dokument sind Open Source. Beiträge, Rezensionen und Feedback sind willkommen.