日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

routing zuul_zuul自定义SimpleHostRoutingFilter

發(fā)布時(shí)間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 routing zuul_zuul自定义SimpleHostRoutingFilter 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

zuul的SimpleHostRoutingFilter主要用來(lái)轉(zhuǎn)發(fā)不走eureka的proxy,里頭是使用httpclient來(lái)轉(zhuǎn)發(fā)請(qǐng)求的,但是有時(shí)候我們需要改動(dòng)相關(guān)httpclient的配置,這個(gè)時(shí)候,就需要修改SimpleHostRoutingFilter了,這里講一下如何擴(kuò)展SimpleHostRoutingFilter。

自定義SimpleHostRoutingFilter

比如把httpclient的CookieSpec設(shè)置為default,比如把SSLContext升級(jí)為T(mén)LSv1.2

public class CustomHostRoutingFilter extends SimpleHostRoutingFilter{

private static final Logger LOGGER = LoggerFactory.getLogger(CustomHostRoutingFilter.class);

@Value("${zuul.host.socket-timeout-millis}")

int SOCKET_TIMEOUT;

@Value("${zuul.host.connect-timeout-millis}")

int CONNECTION_TIMEOUT;

private ZuulProperties.Host hostProperties;

private boolean sslHostnameValidationEnabled;

private PoolingHttpClientConnectionManager connectionManager;

public CustomHostRoutingFilter(ProxyRequestHelper helper, ZuulProperties properties) {

super(helper, properties);

this.sslHostnameValidationEnabled = properties.isSslHostnameValidationEnabled();

this.hostProperties = properties.getHost();

LOGGER.error("CustomHostRoutingFilter init");

}

@Override

protected CloseableHttpClient newClient() {

final RequestConfig requestConfig = RequestConfig.custom()

.setSocketTimeout(SOCKET_TIMEOUT)

.setConnectTimeout(CONNECTION_TIMEOUT)

// 這里改為default

.setCookieSpec(CookieSpecs.DEFAULT).build();

HttpClientBuilder httpClientBuilder = HttpClients.custom();

if (!this.sslHostnameValidationEnabled) {

httpClientBuilder.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);

}

return httpClientBuilder.setConnectionManager(newConnectionManager())

.disableContentCompression()

.useSystemProperties().setDefaultRequestConfig(requestConfig)

.setRetryHandler(new DefaultHttpRequestRetryHandler(0, false))

.setRedirectStrategy(new RedirectStrategy() {

@Override

public boolean isRedirected(HttpRequest request,

HttpResponse response, HttpContext context)

throws ProtocolException {

return false;

}

@Override

public HttpUriRequest getRedirect(HttpRequest request,

HttpResponse response, HttpContext context)

throws ProtocolException {

return null;

}

}).build();

}

@Override

protected PoolingHttpClientConnectionManager newConnectionManager() {

try {

// 這里改為T(mén)LS

final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");

sslContext.init(null, new TrustManager[] { new X509TrustManager() {

@Override

public void checkClientTrusted(X509Certificate[] x509Certificates,

String s) throws CertificateException {

}

@Override

public void checkServerTrusted(X509Certificate[] x509Certificates,

String s) throws CertificateException {

}

@Override

public X509Certificate[] getAcceptedIssuers() {

return null;

}

} }, new SecureRandom());

RegistryBuilder registryBuilder = RegistryBuilder

. create()

.register(HTTP_SCHEME, PlainConnectionSocketFactory.INSTANCE);

if (this.sslHostnameValidationEnabled) {

registryBuilder.register(HTTPS_SCHEME,

new SSLConnectionSocketFactory(sslContext));

}

else {

registryBuilder.register(HTTPS_SCHEME, new SSLConnectionSocketFactory(

sslContext, NoopHostnameVerifier.INSTANCE));

}

final Registry registry = registryBuilder.build();

this.connectionManager = new PoolingHttpClientConnectionManager(registry, null, null, null,

hostProperties.getTimeToLive(), hostProperties.getTimeUnit());

this.connectionManager

.setMaxTotal(this.hostProperties.getMaxTotalConnections());

this.connectionManager.setDefaultMaxPerRoute(

this.hostProperties.getMaxPerRouteConnections());

return this.connectionManager;

}

catch (Exception ex) {

throw new RuntimeException(ex);

}

}

}

配置自定義的filter

@Configuration

@EnableZuulProxy

public class CustomZuulProxyConfig extends ZuulProxyConfiguration{

@Bean

@Override

public SimpleHostRoutingFilter simpleHostRoutingFilter(ProxyRequestHelper helper,

ZuulProperties zuulProperties) {

return new CustomHostRoutingFilter(helper, zuulProperties);

}

}

這樣就大功告成了

doc

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的routing zuul_zuul自定义SimpleHostRoutingFilter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。