将Express JS路由转发到其他服务器

Eri*_*ric 4 javascript node.js express

我正在编写一个express.js应用程序,并希望提供来自另一台服务器的某些路由。

Express提供一些以开头的路线api.example.com/v1/*。我希望将任何以开头的路径/ad/hoc/转发到另一台服务器,并将Express提供的响应(例如api.example.com/ad/hoc/endpoint.php,通过管道传递到)grampas-lamp-stack.example.com/ad/hoc/endpoint.php

我可以通过以下方式完成此操作,res.redirect但我想通过Express应用程序流式传输响应,并避免将浏览器重定向到另一个IP地址。

app.js

var express = require('express');
var app = express();

app.get('/v1/users/:id', UserCtrl.get);
app.get('/v1/users/search', UserCtrl.search);

app.get('/ad/hoc/*', function(req, res) {
  res.redirect('http://grampas-lamp-stack.example.com' + req.url);
}
Run Code Online (Sandbox Code Playgroud)

我尝试搜索“代理请求表达”,但是我不确定代理是否是我所做工作的准确术语。如果这个主题有更好的用词,或者我想完成什么,请告诉我。

Elo*_*pos 7

您可以使用express-http-proxy

是的,代理是您正在寻找的准确术语。正如API所暗示的那样,它将在请求的下面转发到另一个URL。

这是一个示例用法:

var proxy = require('express-http-proxy');
var app = require('express')();

app.use('/route/you/want/proxied', proxy('proxyHostHere', {
    forwardPath: function (req, res) {
      return '/path/where/you/want/to/proxy/' + req.url
    }
}))
Run Code Online (Sandbox Code Playgroud)