是的,这是可能的。
你想要的技术是node js反向代理。您想在同一台机器或不同机器上创建多个服务器,但具有相同的域,但在域扩展后,不同的 url 指向不同的服务器。
如果同一台本地机器上有多个服务器,请使用不同的端口号!如果不同的机器,使用机器的ip号和它的端口号。确保为端口打开防火墙!
以下是您入门的参考:https://codeforgeek.com/reverse-proxy-using-expressjs/
基本理解是创建 3 个不同的服务器。对于同一台机器,使用不同的端口号。
然后创建一个服务器,并在点击 url 时将其指向不同的服务器。
在所有服务器上,运行此命令来设置节点:
npm 初始化 -y
npm i -S express http-proxy
这些是所有 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 台服务器。
现在转到网址,输入:
localhost:3000/app1/ 它会转到您的服务器 1
localhost:3000/app2/ 它会转到你的服务器 2
localhost:3000/app3/ 它会转到您的服务器 3
如果您在不同的本地机器上,请将 localhost 更改为 ip 号。
如果你不喜欢在app1之后使用/,那么你需要配置它。这超出了这个问题的范围。
祝你好运。
编辑:我忘了提及,您放入反向代理服务器的原始 pug 文件。它是主页,您在代理服务器中呈现仪表板页面。