Configurer un proxy Spring WebClient avec Reactor Netty
Fournissez un client Reactor Netty configuré avec un proxy via le connecteur de WebClient et tenez compte de son comportement de proxy fondé sur CONNECT.
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();Utilisez ce WebClient pour l'appel. Pour les services publics sur une route de proxy public autorisée, la liste de proxys HTTP fournit des candidats d'hôte et de port ; confirmez l'accès CONNECT vers la destination réelle. Les types HttpClient/ProxyProvider sont ceux de Reactor Netty, pas du client standard de Java. Un autre WebClient injecté peut conserver un autre connecteur.
Le chemin de proxy HTTP Netty documenté par Reactor Netty utilise CONNECT quel que soit le schéma de la destination. Une cible HTTP simple peut donc nécessiter une autorisation de tunnel vers son port même lorsque le proxy y accepte du HTTP transmis ordinaire. Lisez la réponse réelle du proxy avant de changer le schéma de l'URL. Pour un déploiement Spring 6.2 compatible nécessitant une transmission HTTP/1.1 ordinaire, l'exemple de connecteur Jetty 12.0.35 fournit cette alternative.
Pour le routage par propriétés JVM, choisissez la configuration opt-in documentée de Reactor Netty. Une propriété présente dans la JVM ne configure pas tous les connecteurs.
Gardez séparés la configuration/authentification du proxy, le TLS de la destination et les réponses de l'application. Le connecteur fournit la route, pas les identifiants de la destination ni le résultat du protocole.