next-http-proxy-middleware
next-http-proxy-middleware copied to clipboard
httpProxyMiddleware chaining with multipel targets
It would be great to have the possibility to chain proxy middlewares like this: httpProxyMiddleware(req, res, { target: process.env.target1, pathRewrite: [{ patternStr: "^/api", replaceStr: "", }], }).than((response)=>httpProxyMiddleware(req, response, { target: process.env.target2, pathRewrite: [{ patternStr: "^/s3", replaceStr: "", }], })) What is the proper way of doing this?
Hi @wansiedler It seems to be possible to use multiple targets by implementing it like the code below.
export default (req: NextApiRequest, res: NextApiResponse) => {
const proxyOptions = [{
target: 'https://www.example1.com',
pathRewrite: [{
patternStr: '^/api/new',
replaceStr: '/v2'
}, {
patternStr: '^/api',
replaceStr: ''
}],
},{
target: 'https://www.example2.com',
pathRewrite: [{
patternStr: '^/api/new',
replaceStr: '/v2'
}, {
patternStr: '^/api',
replaceStr: ''
}],
}];
const proxyOption = proxyOptions.find(({pathRewrite}) => {
return pathRewrite.some(({patternStr}) => RegExp(patternStr).test(req?.url))
})
if(proxyOption) {
return httpProxyMiddleware(req, res, proxyOption)
} else {
return res.status(404).send(null);
}
};
Thanks :)