首页 > 解决方案 > Java Vert.x 反向代理自动 Netty 解码

问题描述

我有一个反向代理的小型 Vert.x 实现,它在功能上运行良好。

下游请求使用 tryUseCompression(true) (gziped) 完成,我们的服务器可以相应地响应。

为了避免额外的解压缩/压缩,我们希望当我们收到请求压缩的请求时,并且下游以相同的压缩回答(例如全部在 gzip 中),那么 HTTP 代理不应该尝试解压缩下游结果,而是返回为是对上游响应。

就我可以遵循 Vertx 代码而言,Netty 总是被调用来解码它收到的消息,我们只得到结果

请参阅 Http1xClientHandler::handleMessage:

  HttpObject obj = (HttpObject) msg;
  DecoderResult result = obj.decoderResult();

也可以在 HttpChannelConnector::applyHttp1xConnectionOtions 找到

if (client.getOptions().isTryUseCompression()) {
  pipeline.addLast("inflater", new HttpContentDecompressor(true));
}

是否可以告诉 Vertx / Netty 不要解压缩单个调用的结果?

谢谢您的帮助

标签: javahttpnettyreverse-proxyvert.x

解决方案


不,这是不可能的。您最好的选择是在代码中处理压缩/解压缩。


推荐阅读