Vert.x Http Proxy

Vert.x Http Proxy 是一个基于Vert.x的反向代理服务器,其目的是实现可重用的反向代理逻辑, 这样,使用者就可以关注更高层面的问题了

警告
这个模块处于 Tech Preview 阶段,这意味着在不同版本之间API可能会不太一样

使用 Vert.x Http Proxy

使用 Vert.x Http Proxy之前,请把以下的依赖放到您的构建描述文件的 依赖 部分中

  • Maven (在您的 pom.xml 文件中):

<dependency>
 <groupId>io.vertx</groupId>
 <artifactId>vertx-http-proxy</artifactId>
 <version>4.1.8</version>
</dependency>
  • Gradle (在您的 build.gradle 文件中):

dependencies {
 compile 'io.vertx:vertx-http-proxy:4.1.8'
}

Http Proxy基础

为了使用Vert.x Http Proxy实现一个反向代理,您需要了解这些名词:

  1. 代理服务器 会处理出站请求,然后使用 HttpProxy 实例把他们转发到 源服务器

  2. 源服务器 会处理从*代理服务器*来的请求,然后处理相对应的响应

现在,您已经了解了相应的整体概念。 让我们来深入实现,先从 源服务器 再到使用 HttpProxy代理服务器

源服务器

我们先简单创建一个监听 7070 端口的 源服务器

HttpServer originServer = vertx.createHttpServer();

originServer.requestHandler(req -> {
  req.response()
    .putHeader("content-type", "text/html")
    .end("<html><body><h1>I'm the target resource!</h1></body></html>");
}).listen(7070);

使用 HttpProxy代理服务器

创建一个监听在 8080 端口的使用 HttpProxy 实例的 代理服务器 处理相应的反向代理逻辑

HttpClient proxyClient = vertx.createHttpClient();

HttpProxy proxy = HttpProxy.reverseProxy(proxyClient);
proxy.origin(7070, "origin");

HttpServer proxyServer = vertx.createHttpServer();

proxyServer.requestHandler(proxy).listen(8080);

最后,所有的出站请求都被轻松的反向代理转发到 源服务器