Configurar un proxy de Spring WebClient con Reactor Netty
Proporciona un cliente Reactor Netty configurado con proxy a través del conector de WebClient y ten en cuenta su comportamiento de proxy basado en 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();Utiliza este WebClient para la llamada. Para servicios públicos en una ruta de proxy público permitida, la lista de proxies HTTP proporciona candidatos de host y puerto; confirma el acceso CONNECT al destino real. Los tipos HttpClient/ProxyProvider son de Reactor Netty, no del cliente estándar de Java. Otro WebClient inyectado puede conservar otro conector.
La ruta de proxy HTTP de Netty documentada por Reactor Netty utiliza CONNECT independientemente del esquema del destino. Por lo tanto, un destino HTTP simple puede necesitar permiso de túnel hacia su puerto incluso cuando el proxy acepta allí HTTP reenviado ordinario. Lee la respuesta real del proxy antes de cambiar el esquema de la URL. Para un despliegue compatible con Spring 6.2 que necesite reenvío HTTP/1.1 ordinario, el ejemplo de conector Jetty 12.0.35 ofrece esa alternativa.
Para el enrutamiento por propiedades de la JVM, elige la configuración opt-in documentada de Reactor Netty. Una propiedad presente en la JVM no configura todos los conectores.
Mantén separados la configuración/autenticación del proxy, el TLS del destino y las respuestas de la aplicación. El conector proporciona la ruta, no las credenciales del destino ni el resultado del protocolo.