Einen Spring-WebClient-Proxy mit Reactor Netty konfigurieren
Stellen Sie einen proxy-konfigurierten Reactor-Netty-Client über den Connector von WebClient bereit und berücksichtigen Sie sein CONNECT-basiertes Proxy-Verhalten.
HttpClient httpClient = HttpClient.create()
.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP)
.host("203.0.113.10").port(8080));
WebClient client = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();Verwenden Sie diesen WebClient für den Aufruf. Für öffentliche Dienste auf einer zulässigen öffentlichen Proxy-Route liefert die HTTP-Proxy-Liste Kandidaten für Host und Port; bestätigen Sie den CONNECT-Zugriff auf das tatsächliche Ziel. Die Typen HttpClient/ProxyProvider stammen von Reactor Netty, nicht vom Standard-Client von Java. Ein anderer injizierter WebClient kann einen anderen Connector behalten.
Der dokumentierte Netty-HTTP-Proxy-Pfad von Reactor Netty verwendet CONNECT unabhängig vom Schema des Ziels. Ein reines HTTP-Ziel kann daher eine Tunnel-Genehmigung zu seinem Port benötigen, selbst wenn der Proxy dort gewöhnliches weitergeleitetes HTTP akzeptiert. Lesen Sie die tatsächliche Proxy-Antwort, bevor Sie das Schema der URL ändern. Für ein kompatibles Spring-6.2-Deployment, das gewöhnliche HTTP/1.1-Weiterleitung benötigt, bietet das Jetty-12.0.35-Connector-Beispiel diese Alternative.
Für Routing über JVM-Eigenschaften wählen Sie die dokumentierte Opt-in-Konfiguration von Reactor Netty. Eine in der JVM vorhandene Eigenschaft konfiguriert nicht jeden Connector.
Halten Sie Proxy-Einrichtung/Authentifizierung, TLS des Ziels und Anwendungsantworten getrennt. Der Connector liefert die Route, nicht die Anmeldedaten des Ziels oder das Protokollergebnis.