首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置多个目标的代理服务器?

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

Stack Overflow用户
提问于 2020-05-10 18:39:13
回答 3查看 4.7K关注 0票数 5

我有两个快递服务器:

  1. api1
  2. api2

这两种方法都可以通过以下方式在本地访问:

http://localhost:3000/news

http://localhost:3001/stock

我的目标:

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

我的问题:

我只能访问第一个api1的端点。

如能提供任何帮助,将不胜感激:)

代码语言:javascript
复制
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端点。

代码语言:javascript
复制
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:工作解决方案

代码语言:javascript
复制
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(*奖励):在容器设置中应用解决方案-必须将本地主机更改为容器名称(、news、stock),以使代理能够正确地处理容器。

代码语言:javascript
复制
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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-10 22:35:50

proxy.js:

代码语言:javascript
复制
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);

newsServer.js

代码语言:javascript
复制
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:8008/news/headlines => 'hello‘

stockServer.js

代码语言:javascript
复制
const express = require('express');
const app = express();

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


app.listen(3001);

查询http://localhost:8008/stock => 'hello from api2‘

票数 3
EN

Stack Overflow用户

发布于 2022-02-25 01:53:28

在我的情况下,所提出的解决方案中没有一个是有效的。然而,在仔细检查http-代理-中间件选项文档后,根据路径、主机和任何其他自定义情况更改目标的唯一方法是使用路由器选项。

因此,这一点:

代码语言:javascript
复制
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);

将是:

代码语言:javascript
复制
app.use("**", createProxyMiddleware({
  target: "http://localhost",
  router:{
    "/news":"http://localhost:3000",
    "/stock":"http://localhost:3001"
  }
}));

请参阅:http-代理-中间件选项

票数 1
EN

Stack Overflow用户

发布于 2022-11-01 20:46:27

代码语言:javascript
复制
const express = require('express');
const hosts=require("./hosts.json");
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
for(var i=0;i<hosts.length;i++){


    app.use(`/${hosts[i].url_key}`, createProxyMiddleware({ target: `${hosts[i].host}`, changeOrigin: true }));
console.log(`/${hosts[i].url_key}`);
}


app.listen(9993);

hosts.json:

代码语言:javascript
复制
[
    
      {
        "host":"https://123456.com",
        "url_key":"123456/*"
    
      },
    
  {
        "host":"https://1234567.com",
        "url_key":"yourkey/*"
    
      },
]

希望能帮上忙..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61717005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档