正如标题所建议的,我正在尝试在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
根本无法工作,我想知道为什么吗?
此方法是否正确,或者是否有其他方法可以实现预期的路由映射?
答案 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');
});