代理具有相同 URL 模式的多个主机

Proxy multiple hosts that have same URL patterns

我正在使用 http-proxy-middleware 代理我的 API 电话

如何代理多个目标主机?我已经搜索过这个问题,但仍然无法理解。

https://github.com/chimurai/http-proxy-middleware/issues/12 - 允许我使用代理 table 但是 link 我应该为 target 添加什么?因为我有多个目标。

我正在考虑模式匹配来代理多个主机,但另一个问题会出现,因为我有几个主机几乎相同 URL link。

例子

尝试了以下一些解决方案,但没有用

解决方案 1

const proxyOptions = proxy({
  target: ["https://website1.com", "https://website2.com", "https://api.website3.com"],
  changeOrigin: true,
  loglevel: "debug"
});

解决方案 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)

感谢您调查这个问题!

我设法使用 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请耐心等待