【发布时间】:2015-01-17 00:13:25
【问题描述】:
我有一堆现有的 REST 服务(下面的 #1 和 #2)在仅在内部使用的不同端点上运行。现在我想使用 Spray 在外部公开其中一些 REST API(API-1 和 API-2),因为这个外部端点还将提供一些额外的 API(API-3、API-4)。
是否有一种简单/推荐的方法可以将外部 REST 请求转发到我的新端点到现有 REST 端点?
【问题讨论】:
-
不是 100% 我理解这个问题 - 但如果你只是想要简单的转发,为什么不把 Apache 或一些网络服务器放在前面,让它通过代理通行证呢?反向代理/负载均衡器在路由流量方面可能比喷雾服务器做得更好。
-
如果我只想要路由,我可以这样做。但是,我需要在 new REST 服务中提供一些额外的 API(API-3、API-4),并将调用包装到 existing API(API-1 , API-2)。
-
您仍然可以使用 nginx/apache 之类的东西来支持您的场景,而无需在 scala 代码中进行代理。您可以在 webserver 配置中设置规则以支持仅代理某些 url(API 1 和 2),然后让其余的(3 和 4)落入您的底层喷雾服务器。我们用 nginx 做这件事。
-
@cmbaxter - 这很有帮助。如果可能的话,你能给我一些开始配置 nginx 的地方吗?
-
这里是 proxy_pass 指令的文档。应作为起点。 nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
标签: scala rest http akka spray