Cấu hình proxy cho Spring WebClient với Reactor Netty
Cung cấp một client Reactor Netty đã cấu hình proxy qua connector của WebClient và tính đến hành vi proxy dựa trên CONNECT của nó.
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();
Dùng WebClient này cho lời gọi. Với các dịch vụ công cộng trên tuyến proxy công cộng được phép, danh sách proxy HTTP cung cấp các ứng viên host và port; xác nhận quyền truy cập CONNECT tới đích thực tế. Các kiểu HttpClient/ProxyProvider thuộc về Reactor Netty, không phải client chuẩn của Java. Một WebClient được inject khác có thể giữ một connector khác.
Đường proxy HTTP Netty được tài liệu hóa của Reactor Netty dùng CONNECT bất kể scheme của đích. Do đó một đích HTTP thông thường có thể cần quyền tunnel tới port của nó ngay cả khi proxy chấp nhận HTTP chuyển tiếp thông thường ở đó. Hãy đọc phản hồi thực tế của proxy trước khi đổi scheme của URL. Với một triển khai Spring 6.2 tương thích cần chuyển tiếp HTTP/1.1 thông thường, ví dụ connector Jetty 12.0.35 cung cấp lựa chọn đó.
Với định tuyến bằng thuộc tính JVM, hãy chọn cấu hình opt-in được tài liệu hóa của Reactor Netty. Một thuộc tính có trong JVM không cấu hình mọi connector.
Giữ riêng phần thiết lập/xác thực proxy, TLS của đích và phản hồi của ứng dụng. Connector cung cấp tuyến đường, không phải thông tin xác thực của đích hay kết quả giao thức.