Configurar um proxy no Spring WebClient com Reactor Netty
Forneça um cliente Reactor Netty configurado com proxy pelo conector do WebClient e considere o comportamento de proxy baseado em 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();
Use este WebClient para a chamada. Para serviços públicos numa rota de proxy pública permitida, a lista de proxies HTTP fornece candidatos de host e port; confirme o acesso CONNECT ao destino real. Os tipos HttpClient/ProxyProvider são do Reactor Netty, não do cliente padrão do Java. Outro WebClient injetado pode manter outro conector.
O caminho de proxy HTTP Netty documentado do Reactor Netty usa CONNECT independentemente do esquema do destino. Um destino HTTP simples pode, portanto, precisar de permissão de túnel para a sua port mesmo quando o proxy aceita HTTP encaminhado comum ali. Leia a resposta real do proxy antes de alterar o esquema da URL. Para uma implantação compatível com Spring 6.2 que precise de encaminhamento HTTP/1.1 comum, o exemplo de conector Jetty 12.0.35 oferece essa alternativa.
Para encaminhamento por propriedades da JVM, escolha a configuração opt-in documentada do Reactor Netty. Uma propriedade presente na JVM não configura todos os conectores.
Mantenha separados a configuração/autenticação do proxy, o TLS do destino e as respostas da aplicação. O conector fornece a rota, não as credenciais do destino nem o resultado do protocolo.