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.
Ein Proxy ist ein Zwischenserver, der sich zwischen einem Client (z. B. Ihrer Anwendung) und einem Zielserver (z. B. einer Back-End-API) befindet. Wenn Ihre Anwendung eine Anforderung sendet, empfängt der Proxy sie zuerst. Der Proxy kann dann die Anforderung an den Zielserver weiterleiten, sie ändern, blockieren oder eine Antwort direkt zurückgeben.
Kurz gesagt, ein Proxy fungiert im Auftrag des Clients oder des Servers, um die Kommunikation zu vermitteln.
Funktionsweise eines Proxys
Proxies werden auf der Ebene von HTTP- oder anderen Anwendungsprotokollen betrieben, indem sie eingehende Anfragen empfangen und eine oder mehrere der folgenden Aktionen durchführen:
- Weiterleiten der Anforderung an den Zielserver und Weiterleiten der Antwort an den Client.
- Ändern von Headern, URLs oder Nutzlasten vor der Weiterleitung.
- abfangen und lokal auf die Anforderung reagieren, ohne sich an den Zielserver zu wenden.
- Ablehnung der Anfrage basierend auf Regeln oder Zugriffsrichtlinien.
Aus Sicht des Clients sendet er einfach eine Anforderung an eine URL. Der Proxy behandelt alles andere hinter den Kulissen. Das Muster ist Client zu Proxy zu Zielserver.
Dieses Muster führt eine Ebene von Kontrolle und Abstraktion ein, die Sie verwenden können, um Sicherheit, Observability, Leistung und Testbarkeit zu verbessern.
Proxytypen
Es gibt verschiedene Arten von Proxys. Jeder ist für bestimmte Rollen in der Systemarchitektur geeignet.
Weiterleitungsproxy
Ein Weiterleitungsproxy befindet sich vor dem Client. Wenn Ihre Anwendung eine Anforderung vornimmt, durchläuft sie den Proxy, der entscheidet, ob und wie sie weitergeleitet werden soll. Weiterleitungsproxys werden häufig für Folgendes verwendet:
- Steuern des Zugriffs auf externe Ressourcen.
- Anonymisieren sie den Clientdatenverkehr.
- Protokollieren des ausgehenden Datenverkehrs für die Überwachung.
- Anwenden von Inhaltsfilterung oder -transformation.
Reverseproxy
Ein Reverseproxy befindet sich vor dem Server. Clients sind der zugrunde liegenden Back-End-Infrastruktur nicht bewusst. Der Reverseproxy empfängt eingehende Anforderungen und leitet sie an einen von mehreren Back-End-Servern weiter. Reverse-Proxys werden häufig zu den folgenden Zwecken verwendet:
- Lastenausgleich des Datenverkehrs über mehrere Dienste hinweg.
- Bereitstellen zwischengespeicherter Antworten, um die Back-End-Auslastung zu reduzieren.
- Beenden Sie TLS-/SSL-Verbindungen.
- Blenden Sie interne Dienstdetails aus dem öffentlichen Internet aus.
Transparenter Proxy
Ein transparenter Proxy fängt Datenverkehr ab, ohne dass der Client explizit für die Verwendung konfiguriert wurde. Dieser Typ wird in Unternehmens- oder Internetdienstanbieterumgebungen verwendet, um Richtlinien zu erzwingen oder die Nutzung zu überwachen.
Warum Proxys für Anwendungsentwickler wichtig sind
Häufig verwalten Infrastruktur- oder Netzwerkteams Proxys. Proxys wirken sich jedoch direkt auf das Anwendungsverhalten aus, insbesondere in Entwicklungs- und Testumgebungen. Hier sind einige praktische Möglichkeiten, wie sie sich auf Ihre tägliche Arbeit auswirken.
Debuggen und Beobachtbarkeit
Proxys können HTTP-Datenverkehr erfassen und prüfen. Tools wie Dev Proxy, Fiddler, Proxyman, Charles Proxy oder Mitmproxy fungieren als lokale Weiterleitungsproxys. Sie können Ihre Anwendung durch diese ausführen, um Anforderungen und Antworten zu analysieren, Fehler zu erkennen und Header oder Authentifizierungstoken zu überprüfen.
API-Gateway und Routing
In vielen Produktionssystemen wird der Datenverkehr zum Back-End Ihrer Anwendung über ein API-Gateway oder Reverseproxy wie NGINX oder einen cloudeigenen Dienst wie Azure API Management weitergeleitet. Diese Proxys behandeln Routing, Authentifizierung, Ratelimitierung und vieles mehr.
Wenn Sie Ihre API entwerfen oder verteilte Dienste erstellen, müssen Sie verstehen, wie Proxys sich auf Header auswirken (z. B. X-Forwarded-For
), Time-outs und Größenbeschränkungen von Anfragen.
CORS und lokale Entwicklung
Während der lokalen Entwicklung, insbesondere in Webanwendungen, treten möglicherweise CorS-Einschränkungen (Cross-Origin Resource Sharing) auf, wenn Sie APIs aus dem Browser aufrufen. Ein Entwicklungsproxy kann Ihre Anforderungen an die Ziel-API weiterleiten, während Header umgeschrieben werden, um CORS-Einschränkungen zu umgehen. Allgemeine Beispiele für Entwicklertools, die CORS-Anforderungen neu schreiben, sind vite
, webpack-dev-server
oder benutzerdefinierte Proxy-Middleware in Frameworks wie Express oder ASP.NET Core.
Dienstvirtualisierung und -tests
Proxys können Back-End-APIs simulieren. Diese Funktion ist nützlich, wenn der eigentliche Dienst während des Tests nicht verfügbar, instabil oder teuer ist. Durch Das Abfangen und Modellieren von Antworten können Sie das Anwendungsverhalten in verschiedenen Szenarien testen, z. B. Timeouts, Fehler oder falsch formatierte Daten.
Tools wie Dev Proxy oder benutzerdefinierte Proxyimplementierungen werden häufig für diesen Zweck in Integrations- und End-to-End-Tests verwendet.
Authentifizierung und Sicherheit
Proxys sind häufig die erste Verteidigungslinie bei der Sicherung von Anwendungen. Sie können Zugriffssteuerungen erzwingen, Authentifizierungsheader einfügen oder TLS/SSL-Verbindungen beenden. Als Entwickler ist es wichtig zu wissen, wie sich Ihre Anwendung verhält, wenn sie sich hinter einem Proxy befindet und wie Sie auf Header zugreifen, die Authentifizierungs- oder Identitätsinformationen enthalten.
Allgemeine Überlegungen zu Headern und Proxys
Wenn eine Anforderung einen Proxy durchläuft, werden bestimmte Header hinzugefügt oder geändert, um wichtige Metadaten beizubehalten. Zum Beispiel:
X-Forwarded-For
: Gibt die ursprüngliche IP-Adresse des Clients an.X-Forwarded-Proto
: Gibt das ursprüngliche Protokoll (HTTP oder HTTPS) an.X-Forwarded-Host
: Gibt den ursprünglich vom Client angeforderten Host an.
Wenn Ihre Anwendung hinter einem Reverseproxy ausgeführt wird, stellen Sie sicher, dass Ihr Framework oder Ihre Plattform so konfiguriert ist, dass sie die Header richtig vertraut und interpretiert.
Dev Proxy als Forward Proxy für Entwicklung und Tests
Dev Proxy ist ein Forward-Proxy, mit dem Sie Anforderungen von Ihrer Anwendung an einen beliebigen Zielserver abfangen und modifizieren können. Mit Dev Proxy können Sie:
- Erfahren Sie, wie Ihre App auf API-Fehler reagiert.
- Überprüfen Sie, wie Ihre App API-Geschwindigkeitsbeschränkungen verarbeitet.
- Erfahren Sie, wie Ihre App langsame APIs verarbeitet.
- Schnelles Erstellen von Mock-APIs, ohne eine Codezeile zu schreiben.
- Verbessern Sie Ihre App mit kontextbezogenen Anleitungen zur Verwendung von APIs.