设置多个目标的代理服务器?

问题描述 投票:2回答:1

我有2个快递服务器。

  1. api1
  2. api2

都是在本地使用访问。

http://localhost:3000/news

http://localhost:3001/stock

我的目的是:

从代理服务器上访问两个快递服务器的端点。http://localhost:8008

我的问题。

我只能打第一个 api1的端点

如果有任何帮助,将非常感谢:)

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

const api1 = createProxyMiddleware({
  target: 'http://localhost:3000'
});


const api2 = createProxyMiddleware({
    target: 'http://localhost:3001'
  });

const app = express();

app.use(api1);
app.use(api2);

app.listen(8008);

**编辑1:

我试了一下,它的工作原理是 api1 端点而非 api2 端点。

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

const apiProxy = createProxyMiddleware('/', {
  target: 'http://localhost:3000'
});
const apiProxytwo = createProxyMiddleware('/', {
  target: 'http://localhost:3001'
});

const app = express();

app.use(apiProxy,apiProxytwo);
app.listen(8008);

还在寻找解决方案!@! 请大家帮忙!

编辑2:工作解决方案

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();


app.use('/news/*', createProxyMiddleware({ target: 'http://localhost:3000', changeOrigin: true ,}));
app.use('/stock/', createProxyMiddleware({ target: 'http://localhost:3001', changeOrigin: true, }));

app.listen(8008);

编辑3(*附加)。在容器设置中应用解决方案--必须将localhost改为容器名称(新闻库存),让代理正确地与容器一起工作。

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();


app.use('/news/*', createProxyMiddleware({ target: 'http://news:3000', changeOrigin: true ,}));
app.use('/stock/', createProxyMiddleware({ target: 'http://stock:3001', changeOrigin: true, }));

app.listen(8008);
express http-proxy http-proxy-middleware
1个回答
1
投票

代理服务器.js。

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();


app.use('/news/*', createProxyMiddleware({ target: 'http://localhost:3000', changeOrigin: true }));
app.use('/stock', createProxyMiddleware({ target: 'http://localhost:3001', changeOrigin: true }));

app.listen(8008);

新闻服务器.js

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

app.get('/news/headlines', (req, res) => {
    res.send('hello from headlines')
});

app.get('/news/other', (req, res) => {
    res.send('hello from other')
})


app.listen(3000);

查询 http:/localhost:8008newsheadlines。 => '来自头条的问候'。

股票服务器.js

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

app.get('/stock', function(req, res) {
    res.send('hello from api2');
  });


app.listen(3001);

查询 http:/localhost:8008stock => 'hello from api2' (来自api2)

© www.soinside.com 2019 - 2024. All rights reserved.