Undertow:如何控制选择主机取决于请求正文内容?

Posted

技术标签:

【中文标题】Undertow:如何控制选择主机取决于请求正文内容?【英文标题】:Undertow: How to control choosing host depends on request body content? 【发布时间】:2019-03-07 18:33:24 【问题描述】:

我尝试像这样实现自己的代理:

LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient()
        .addHost(new URI("http://localhost:8080"))
        .addHost(new URI("http://localhost:7777"))
        .setConnectionsPerThread(20);

Undertow reverseProxy = Undertow.builder()
        .addHttpListener(8081, "localhost")
        .setIoThreads(1)
        .setHandler(ProxyHandler.builder().setProxyClient(loadBalancer).setMaxRequestTime(30000).build())
        .build();
reverseProxy.start();

我想控制选择代理服务器。取决于请求正文我想选择localhost:8080localhost:7777

是否可以在 Undertow 代理中使用?

附:如果无法进行undertow,我准备切换到另一个代理

【问题讨论】:

【参考方案1】:

我正在使用 Jetty org.eclipse.jetty.proxy.ProxyServlet 管理后端的动态列表。

您可以选择目标后端覆盖: org.eclipse.jetty.proxy.AbstractProxyServlet.rewriteTarget(HttpServletRequest)

(我也只想使用 Undertow)

【讨论】:

以上是关于Undertow:如何控制选择主机取决于请求正文内容?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 内嵌容器Undertow参数设置

如何在 WildFly 中设置 Undertow MAX_ENTITY_SIZE

为啥很多SpringBoot开发者放弃了Tomcat,选择了Undertow?

如何在从 servlet 过滤器执行 HTTP 重定向时保留请求正文

如何在 asp.net 核心 webapi 控制器中读取请求正文?

Wildfly / Undertow:一台主机的多个别名