如何在nodejs服务器上拥有多个节点应用程序



我正在尝试合并两个(或多个(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文件放进了你的反向代理服务器。它是主页,您可以在代理服务器中呈现您的仪表板页面。

相关内容

  • 没有找到相关文章

最新更新