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实现一个反向代理,您需要了解这些名词:
-
代理服务器 会处理出站请求,然后使用
HttpProxy
实例把他们转发到 源服务器 -
源服务器 会处理从*代理服务器*来的请求,然后处理相对应的响应
现在,您已经了解了相应的整体概念。
让我们来深入实现,先从 源服务器 再到使用 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);
最后,所有的出站请求都被轻松的反向代理转发到 源服务器