Node.js中的简单代理服务

时间:2019-01-29 16:20:54

标签: node.js express proxy

正如标题所建议的,我正在尝试在nodejs中创建一个简单的代理服务。

const express = require('express');
const proxy = require('http-proxy-middleware');

const app = express();

const auth = proxy({
  target: 'http://localhost:4200',
  ws: true
});

const game = proxy({
  target: 'http://localhost:4201',
  ws: true
});

app.use('/', auth);

app.use('/game', game);

app.listen(80, () => {
  console.log('Proxy listening on port 80');
});

但是,只有auth路由已正确映射到 / game根本无法工作,我想知道为什么吗?

此方法是否正确,或者是否有其他方法可以实现预期的路由映射?

1 个答案:

答案 0 :(得分:3)

尝试一下,效果很好: 路径重写用于删除/ game部分。 如果您不使用路径重写,那么它将命中http://localhost:4201/game(带有基本路径)。

    const express = require('express');
    const proxy = require('http-proxy-middleware');

    const app = express();

    const auth = proxy({
      target: 'http://localhost:4200',
      ws: true
    });

    const game = proxy({
      target: 'http://localhost:4201',
      pathRewrite: {
        '^/game': '' // remove base path
      },
      ws: true
    });
    app.use('/game', game);
    app.use('/', auth); // route '/' should be in last

    app.listen(8080, () => {
      console.log('Proxy listening on port 80');
    });