两个 localhost Web 服务器是单独开发的,彼此之间没有相互了解,也不需要代理服务器。均使用 NodeJS 和 Express.js 设置
app.use(express.static(__dirname + '/frontend'));
从这两个服务器我有两组静态资源,例如在 HTML 文件中找到的
<script type="text/javascript" src="js/index.js"></script>
现在我必须在设置代理服务器www.proxy.com
。两个 Web 服务器可以通过
www.proxy.com/web1
->localhost:4000
www.proxy.com/web2
->localhost:4001
这是使用 NodeJS 和 http-proxy 完成的:
app.all("/web1*", (req, res) => {
req.url = req.url.replace(/\/web1/g, "");
apiProxy.web(req, res, {target: "http://localhost:4000"});
});
app.all("/web2*", (req, res) => {
req.url = req.url.replace(/\/web2/g, "");
apiProxy.web(req, res, {target: "http://localhost:4001"});
});
为了正确加载静态资源,最困难的方法是将其全部更改以匹配新的 url 分配,例如
<script type="text/javascript" src="
web1/js/index.js"></script>
但是有没有更好的解决方案,不需要改变所有静态资源的url呢?