3

I am using http-proxy-middleware to proxy my API calls

How can I proxy multiple target hosts? I have searched through the issue and still could not understand.

https://github.com/chimurai/http-proxy-middleware/issues/12 - Allow me to use proxy table but what should link should I put for target? Because I have multiple targets.

I am thinking of pattern matching to proxy multiple hosts but another problem would arise because I have a few hosts with almost the same URL link.

Example

Tried some solutions below but dosen't work

Solution 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"
});

Solution 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 })
    );

Mounting the proxy

server.use("/api", proxyOptions)

Thanks for looking into this question!

1 Answer 1

1

I managed to get the solution using 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"
});

Mounting the server

const server = express();

server.use("/website1", website1);
server.use("/website2", website2);
server.use("/website3", website3);

However, this will give my website alot pages that I do not need like http://localhost:3000/website1 and etc.

Are there any ways to hide these pages or display something else instead of the homepages of websites that I am using.

Sorry, I am still learning node.js please be patience with me.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.