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();

이 WebClient를 호출에 사용합니다. 허용된 공용 프록시 경로의 공용 서비스에는 HTTP 프록시 목록이 호스트와 포트 후보를 제공합니다. 실제 대상에 대한 CONNECT 접근을 확인하세요. HttpClient/ProxyProvider 타입은 Reactor Netty의 것이며 Java 표준 클라이언트의 것이 아닙니다. 다른 주입된 WebClient는 다른 커넥터를 유지할 수 있습니다.

Reactor Netty의 문서화된 Netty HTTP 프록시 경로는 대상 스킴과 관계없이 CONNECT를 사용합니다. 따라서 프록시가 그곳에서 일반 전달 HTTP를 허용하더라도 단순 HTTP 대상은 해당 포트에 대한 터널 권한이 필요할 수 있습니다. URL의 스킴을 바꾸기 전에 실제 프록시 응답을 읽으세요. 일반 HTTP/1.1 전달이 필요한 호환 Spring 6.2 배포에는 Jetty 12.0.35 커넥터 예제가 그 대안을 제공합니다.

JVM 속성 라우팅에는 Reactor Netty의 문서화된 옵트인 구성을 선택하세요. JVM에 있는 속성이 모든 커넥터를 구성하지는 않습니다.

프록시 설정/인증, 대상 TLS, 애플리케이션 응답을 분리해 두세요. 커넥터는 경로를 제공할 뿐 대상의 자격 증명이나 프로토콜 결과를 제공하지 않습니다.

관련 글