webserver - 使用从其文档中获取的 Vert.x Web 代理代码的 404 错误
问题描述
我正在使用 Vert.x Web 库为反向代理创建测试应用程序。我正在使用 Vert.x 网站上提供的信息:
https://vertx.io/docs/4.1.0/vertx-web-proxy/java/#_using_vert_x_web_proxy
根据上述站点的文档,我编写了一些简单的测试代码:
public class WebTest
{
public static void main(String[] args)
{
Vertx vertx = Vertx.vertx();
HttpClient client = vertx.createHttpClient();
HttpProxy proxy = HttpProxy.reverseProxy(client);
proxy.origin(8080,"localhost");
HttpServer server = vertx.createHttpServer();
Router router = Router.router(vertx);
router.route(HttpMethod.GET,"/foo").handler(ProxyHandler.create(proxy));
server.requestHandler(router);
server.listen(8010);
}
}
我有一个在端口 8080 上运行的 Web 服务器(Vert.x 术语中的所谓“源”)。上面的代码和网站上的代码之间的唯一区别是我使用不同的端口号作为代理和源服务器。根据 Vert.x 网站上的文档,访问 http://localhost:8010/foo 的浏览器应该可以访问源服务器。
相反,我收到 404 Not found 错误。
此代码中是否缺少某些内容?也许文档中未涵盖某些内容?
有谁知道如何使它正常工作?
解决方案
@因素三您缺少指南的后端部分,并且您正在以无组织的方式混合部分。按照指南,它可以是这样的:
Vertx vertx = Vertx.vertx();
// Origin Server (Backend 8080)---------
// Here you deploy the real server with the endpoint ("hello world" in this case)
HttpServer backendServer = vertx.createHttpServer();
Router backendRouter = Router.router(vertx);
backendRouter
.route(HttpMethod.GET, "/foo")
.handler(
rc -> {
rc.response().putHeader("content-type", "text/plain").end("hello world");
});
backendServer.requestHandler(backendRouter).listen(8080);
// Proxy Server (8010)
// Here you deploy the server that will act as a proxy
HttpServer proxyServer = vertx.createHttpServer();
Router proxyRouter = Router.router(vertx);
proxyServer.requestHandler(proxyRouter);
proxyServer.listen(8010);
// Proxy Magic
// Here you route proxy server requests (8010) to the origin server (8080)
HttpClient proxyClient = vertx.createHttpClient();
HttpProxy httpProxy = HttpProxy.reverseProxy(proxyClient);
httpProxy.origin(8080, "localhost");
proxyRouter.route(HttpMethod.GET, "/foo").handler(ProxyHandler.create(httpProxy));
推荐阅读
- c++ - Qt 对于我的带宽上限来说太大了。我的替代方案是什么?
- uitableview - 设置 UITableViewCellAccessory 的左 X 位置
- dask - 无法通过 SSH 启动 dask 集群
- appium - 如何使用 Appium 运行需要两台设备的测试
- java - XWPFRun 生成运行并修剪空格
- java - 如何在 Android 中使用 google/api/annotations.proto
- material-ui - 无法缩小代码 ./node_modules/@material-ui/core/es/styles/createMuiTheme.js
- python - Django 模型中的日期数组
- xamarin - 后台服务android 8(无JobScheduler)- Xamarin
- c# - 有时会抛出“System.InvalidOperationException:序列不包含元素”