Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 相对URL';它不使用express http代理_Javascript_Node.js_Express_Proxy - Fatal编程技术网

Javascript 相对URL';它不使用express http代理

Javascript 相对URL';它不使用express http代理,javascript,node.js,express,proxy,Javascript,Node.js,Express,Proxy,我有一个服务器托管我的应用程序和一些微服务(它们都是非常简单的网络应用程序)。我想通过互联网访问这些服务,但不为每个服务打开端口。所以我决定在服务器上设置一个反向代理(使用express http proxy),这样我就可以通过一个端口访问所有服务。问题是,虽然我可以访问每个服务的主页,但所有相关链接都指向错误的位置 以下是一个例子: service.js var proxy = require('express-http-proxy'); var express = require("expr

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

以下是一个例子:

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
包含以下行

如果我通过代理访问微服务,则任何相关链接都不起作用。如果我将鼠标悬停在上面的链接上,我可以看到问题出在哪里。链接看起来像这样

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

它应该在哪里

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


注意
image.jpg

之前缺少的
/8000
,好的,我解决了它。显然,当您尝试访问代理背后的服务时,您需要在URL的末尾包含
/
,否则,
节点http proxy
将忽略最后一部分。更多澄清的示例:

如果访问此URL,则其中的所有相对URL都将缺少
8000
部分
http://myserver.com/service/8000

而这个
http://myserver.com/service/8000/
工作正常。注意末尾的
/

尝试在index.html中使用