相对 URL 无法使用 express-http-proxy

Relative URL's not working with express-http-proxy

我有一个服务器托管我的应用程序和一些微服务(它们都是非常简单的网络应用程序)。我想通过互联网访问这些服务,但不为每个服务打开一个端口。所以我决定在服务器上设置一个反向代理(使用 express-http-proxy),这样我就可以通过一个端口访问所有服务。问题是虽然我可以访问每项服务的主页,但所有相关 link 都指向不正确的位置。

这里有一个例子:

service.js

var proxy = require('express-http-proxy');
var express = require("express")
var app = express()

app.use(express.static('public'))
app.listen(8000);

proxy.js

let express = require("express");
let proxy = require('express-http-proxy');
let app = express();
app.listen(80);

app.get("/", (req, res) => {
    res.send("hello world")
});

app.use('/service/8000/', proxy("http://localhost:8000"));

假设index.html包含以下行

<a href="image.jpg">test image</a>

如果我通过亲属 link 工作的代理 none 访问微服务。如果我将鼠标悬停在上面 link 上,我可以看到问题出在哪里。 link 看起来像这样

http://myserver.com/serivce/image.jpg

它应该在哪里

http://myserver.com/service/8000/image.jpg

注意 image.jpg

之前缺少的 /8000

好的,我解决了。显然,当您尝试访问代理后面的服务时,您需要在 URL 的末尾包含 / 否则,node-http-proxy 将忽略最后一部分。更多说明的示例:

如果您访问此 URL,其中的所有相关 URL 将丢失 8000 部分 http://myserver.com/service/8000

而这个 http://myserver.com/service/8000/ 确实可以正常工作。注意最后的 /