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 代理路径无论目的地 scheme 如何都使用 CONNECT。因此,即使代理在那里接受普通的转发 HTTP,普通 HTTP 目标也可能需要到其端口的隧道许可。在更改 URL 的 scheme 之前,先阅读代理的实际响应。对于需要普通 HTTP/1.1 转发的兼容 Spring 6.2 部署,Jetty 12.0.35 连接器示例提供了这种替代方案。

对于 JVM 属性路由,选择 Reactor Netty 文档中记录的 opt-in 配置。JVM 中存在的属性并不会配置每一个连接器。

将代理设置/身份验证、目的地 TLS 和应用程序响应分开。连接器提供路由,而不是目的地的凭据或协议结果。

相关文章