如何解决使用 http-proxy-middleware 转发 Express 请求,仅更改端口
这是一个 NodeJS,Express 应用程序。
我想接受一个进入路径的请求,例如 https://mycompany.com/cost-recovery -> http://mycompany.com:8447/cost-recovery。我希望将所有标头、请求正文等传递给此转发主机。基本上我唯一要做的就是改变端口。
我查看了 http-proxy-middleware,但不确定如何处理。我不确定路由器选项的作用。另外,如果有任何查询字符串,我不确定它们是否会通过。此服务的问题在于,我似乎无法接受传入请求并生成代理。或者至少,我不知道如何。如果可以,我会将代理构建为基于传入请求的处理程序。
不是在寻找完整的代码片段,只是寻找要查找的部分的线索。或者如果你有一个例子,我想看看。
解决方法
正如您怀疑的那样,使用 router
允许您控制将请求代理到的方式/位置。请注意,在这种情况下不需要 target
,但无论如何您都需要指定它,否则 lib 将引发错误(请参阅此 github-issue 讨论此内容)。
因此,例如,如果您想根据请求路径控制代理到的位置,您可以执行以下操作:
const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const proxyMiddleware = createProxyMiddleware({
target: 'not-needed',router: (req) => {
if (req.path === '/cost-recovery') {
return 'http://some-domain:1234';
} else if (req.path === '/some-other-path') {
return 'http://some-domain.com:5678';
}
}
});
const app = express();
app.use(proxyMiddleware);
app.listen(3000); // set whatever port your proxy-app should run on here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。