节点 http-proxy-middleware 不能将本地服务器作为目标

Node http-proxy-middleware not working with local servers as targert

我有一个节点服务器,我正在使用 http-proxy-middleware 代理我的 api 请求,类似于 this post 中发生的情况。当我代理到真正的生产服务器时,一切正常,但是当我将代理指向本地服务器时,它就不起作用了。

这是我的代码:

app.use('/_api', proxy({target: 'http://localhost:9000', changeOrigin: true}));

服务器在:

http://localhost:9000/hello 正在工作(我可以从我的浏览器访问它),但是,当我尝试从我自己的服务器访问它时,像这样:

http://localhost:3000/_api/hello

我得到:

Cannot GET /_api/hello

如果我用真实服务器替换 localhost:9000,一切正常...

您的代理请求正在尝试使用原始请求路径访问本地服务器。

例如,当您请求时

http://localhost:3000/_api/hello

您的代理正在尝试访问

http://localhost:9000/_api/hello

_api/hello 路径在您的 localhost:9000 上不存在,由 Cannot GET /_api/hello 错误显示。

您需要重写代理请求路径以删除 _api 部分:

app.use('/_api', proxy({
    target: 'http://localhost:9000', 
    changeOrigin: true,
    pathRewrite: {
        '^/_api' : '/'
    }
}));