我正在尝试合并两个(或多个(nodejs应用程序。第一个是登录应用程序,它将带您进入仪表板。当你在那里时,你应该会看到另一个专用于你的应用程序,它在不同的本地IP和端口上运行。因此,对于登录,我使用Okta express登录门户,该门户从Okta服务器获取用户数据。现在这是pug 中的仪表板
block content
h2.text-center Dashboard
h2.user.profile.profileUrl
.row
.offset-sm-2.col-sm-8
.jumbotron.text-center.
Welcome to your dashboard page, #{user.profile.firstName}.
#{user.profile.profileUrl}.
看起来像这个
仪表板
现在,我希望user.profle.profleURL在控制面板上单击时真正打开,但地址在浏览器中不可见,因此地址将是相同的xydomain/dashboard有可能吗?
是的,这是可能的。
您想要的技术是node-js反向代理。您想在同一台机器或不同的机器上创建多个服务器,但使用相同的域,但在域扩展后,不同的url指向不同的服务器。
如果同一台本地机器上有多台服务器,请使用不同的端口号!如果机器不同,请使用机器的ip号及其端口号。确保为端口打开防火墙!
以下是您入门的参考资料:https://codeforgeek.com/reverse-proxy-using-expressjs/
基本理解是创建3个不同的服务器。对于同一台机器,请使用不同的端口号。
然后创建一个服务器,并在url被命中时将其指向不同的服务器。
在所有服务器上,运行此命令以设置节点:
npm init-y
npm i-S express http代理
这些是所有4台服务器的代码。
例如服务器1:
var express = require("express");
var app = express();
app.get('/app1',function(req,res) {
res.send("Hello world From Server 1");
});
app.listen(3001);
服务器2:
var express = require("express");
var app = express();
app.get('/app2',function(req,res) {
res.send("Hello world From Server 1");
});
app.listen(3002);
服务器3:
var express = require("express");
var app = express();
app.get('/app3',function(req,res) {
res.send("Hello world From Server 1");
});
app.listen(3003);
反向代理服务器:
var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
var serverOne = 'http://localhost:3001',
ServerTwo = 'http://localhost:3002',
ServerThree = 'http://localhost:3003';
app.all("/app1/*", function(req, res) {
console.log('redirecting to Server1');
apiProxy.web(req, res, {target: serverOne});
});
app.all("/app2/*", function(req, res) {
console.log('redirecting to Server2');
apiProxy.web(req, res, {target: ServerTwo});
});
app.all("/app3/*", function(req, res) {
console.log('redirecting to Server3');
apiProxy.web(req, res, {target: ServerThree});
});
app.listen(3000);
现在运行所有4台服务器。
现在转到url,键入:
localhost:3000/app1/,然后它转到您的服务器1
localhost:3000/app2/,然后它转到您的服务器2
localhost:3000/app3/,然后它转到您的服务器3
如果您在不同的本地机器上,请将localhost更改为ip号。
如果你不喜欢在app1之后使用/after,那么你需要对其进行配置。这超出了这个问题的范围。
祝你好运。
编辑:我忘了提一下,你把原来的pug文件放进了你的反向代理服务器。它是主页,您可以在代理服务器中呈现您的仪表板页面。