将图片上传请求转发到另一台服务器

Forwarding an image upload request to another server

我正在尝试基于所谓的 "micro architecture" 构建一个 NodeJS REST API 项目(基本上是多个较小的 NodeJS 项目,它们可以 运行 完全独立,但同时时间一起工作)。

目前用户可以从应用程序上传图片,然后我的 NodeJS 后端会适当地处理和保存它们。

现在,我要做的是:

用户选择要从应用程序上传的图像 -> 应用程序向 "Main API" 端点发出请求 -> 主 API 端点然后将此请求转发到 "Image Service" -> 一旦图像服务(这是一个完全不同的服务器)成功完成,它应该 return 存储图像的 URL 到主 API 服务器端点,然后它将return 返回应用程序的信息。

我的问题是,如何将图片上传请求从一台服务器转发到另一台服务器?理想情况下,我不希望 Main API 临时存储图像,然后向图像服务发出请求。

我想要的是尝试将 Main API 接收到的数据直接转发到图像服务服务器。我猜你可能会说我想 "stream" 将数据从一个地方转移到另一个地方,而不必临时存储在磁盘或内存上。我真的只是希望它 "tunnel" 从一台服务器到另一台服务器。

这可能吗?这是一种有效的方法吗?我只想让应用程序访问 1 个中心点,我不想让它知道这个图像服务服务器。我希望该应用程序只向 Main API 发出请求,然后它将根据需要调用我的其他小服务。

我正在使用 NodeJS、Express、Multer(用于图片上传)和 Digital Ocean 托管(如果这有什么不同的话)。

你基本上要做的是设置一个代理服务器,它将请求直接传递到另一台机器并返回。有一些库可以帮助解决这个问题,这篇文章特别是 http://blog.vanamco.com/proxy-requests-in-node-js/ 将解释如何进行设置,即使它们实际上只是试图绕过 HTTPS,同样的概念也适用于此。

简而言之,您获得了文件上传 POST,然后立即向另一台服务器发出相同的请求,当响应被 returned 时,立即 return 返回到前端。您的入口点可以设置为集线器,您可以将请求代理到其他服务器,甚至可以在必要时在同一台服务器上处理它们。