相对 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/
确实可以正常工作。注意最后的 /
。
我有一个服务器托管我的应用程序和一些微服务(它们都是非常简单的网络应用程序)。我想通过互联网访问这些服务,但不为每个服务打开一个端口。所以我决定在服务器上设置一个反向代理(使用 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/
确实可以正常工作。注意最后的 /
。