Настройка прокси для Spring WebClient с Reactor Netty
Передайте клиент Reactor Netty с настроенным прокси через коннектор WebClient и учтите его поведение прокси на основе 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();
Используйте этот WebClient для вызова. Для публичных сервисов на разрешённом публичном прокси-маршруте список HTTP-прокси предоставляет кандидатов host и port; подтвердите доступ CONNECT к реальному назначению. Типы HttpClient/ProxyProvider принадлежат Reactor Netty, а не стандартному клиенту Java. Другой внедрённый WebClient может сохранять другой коннектор.
Документированный путь HTTP-прокси Netty в Reactor Netty использует CONNECT независимо от схемы назначения. Поэтому обычной HTTP-цели может требоваться разрешение туннеля к её port, даже если прокси принимает там обычный пересылаемый HTTP. Прочитайте фактический ответ прокси, прежде чем менять схему URL. Для совместимого развёртывания Spring 6.2, которому нужна обычная пересылка HTTP/1.1, пример коннектора Jetty 12.0.35 даёт такую альтернативу.
Для маршрутизации через свойства JVM выберите документированную opt-in конфигурацию Reactor Netty. Свойство, присутствующее в JVM, не настраивает каждый коннектор.
Держите отдельно настройку/аутентификацию прокси, TLS назначения и ответы приложения. Коннектор задаёт маршрут, а не учётные данные назначения или результат протокола.