我正在使用http-proxy-middleware来代理我的API调用
如何代理多个目标主机?我已经搜索了这个问题但仍然无法理解。
https://github.com/chimurai/http-proxy-middleware/issues/12 - 允许我使用代理表但是我应该为target
添加什么链接?因为我有多个目标。
我正在考虑使用模式匹配来代理多个主机,但是会出现另一个问题,因为我有几个主机具有几乎相同的URL链接。
实施例
尝试了下面的一些解决方案但是没有工作
解决方案1
const proxyOptions = proxy({
target: ["https://website1.com", "https://website2.com", "https://api.website3.com"],
changeOrigin: true,
loglevel: "debug"
});
Solutuon 2
const proxyTable = {
"/api": ["https://website1.com", "https://website2.com", "https://api.website3.com"]
};
const proxyOptions = proxy({
target: "http://localhost:3000",
router: proxyTable,
changeOrigin: true,
loglevel: "debug"
});
解决方案3
server.use(
proxy("/api", { target: "https://website1.com", changeOrigin: true }),
proxy("/api", { target: "https://website2.com", changeOrigin: true }),
proxy("/api", { target: "https://api.website3.com", changeOrigin: true })
);
挂载代理
server.use("/api", proxyOptions)
感谢您查看此问题!
答案 0 :(得分:0)
我设法使用pathRewrite
const website1 = proxy({
target: "https://website1.com",
changeOrigin: true,
pathRewrite: {
"^/website1": "/api"
},
loglevel: "debug"
});
const website2 = proxy({
target: "https://website2.com",
changeOrigin: true,
pathRewrite: {
"^/website2": "/api"
},
loglevel: "debug"
});
const website3 = proxy({
target: "https://api.website3.com",
changeOrigin: true,
pathRewrite: {
"^/website3": "/api"
},
loglevel: "debug"
});
挂载服务器
const server = express();
server.use("/website1", website1);
server.use("/website2", website2);
server.use("/website3", website3);
然而,这将为我的网站提供我不需要的页面,如http://localhost:3000/website1
等。
有没有办法隐藏这些页面或显示其他内容而不是我正在使用的网站的主页。
抱歉,我还在学习node.js,请耐心等待。