我有两个快递服务器:
这两种方法都可以通过以下方式在本地访问:
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(*奖励):在容器设置中应用解决方案-必须将本地主机更改为容器名称(、news、和stock),以使代理能够正确地处理容器。
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);发布于 2020-05-10 22:35:50
proxy.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);newsServer.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:8008/news/headlines => 'hello‘
stockServer.js
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‘
发布于 2022-02-25 01:53:28
在我的情况下,所提出的解决方案中没有一个是有效的。然而,在仔细检查http-代理-中间件选项文档后,根据路径、主机和任何其他自定义情况更改目标的唯一方法是使用路由器选项。
因此,这一点:
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);将是:
app.use("**", createProxyMiddleware({
target: "http://localhost",
router:{
"/news":"http://localhost:3000",
"/stock":"http://localhost:3001"
}
}));请参阅:http-代理-中间件选项
发布于 2022-11-01 20:46:27
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:
[
{
"host":"https://123456.com",
"url_key":"123456/*"
},
{
"host":"https://1234567.com",
"url_key":"yourkey/*"
},
]希望能帮上忙..。
https://stackoverflow.com/questions/61717005
复制相似问题