运行同端口ec2多节点应用

Run Multiple node application in same port ec2

我来自 java 背景,我开始使用节点 js,现在我很喜欢它。 在将其发布到 SO 之前,我已经阅读了与我的问题类似的其他主题。

我有 3 个不同的节点应用程序(应用程序 1、应用程序 2、应用程序 3) 通常,如果它在 java 中,我将在 tomcat 中部署三个应用程序,并且可以像这样在本地访问它们 localhost:8080/app1,localhost:8080/app2 等。 我在节点 js 中寻找类似的方法。我读过这个 thread 并在全球范围内安装了 express 并使用此代码

创建了一个名为 master.js 的脚本

var express = require('express'); var app = express();

app .use('/app1', require('./app1/server.js').app) .use('/app2', require('./app2/server.js').app) .listen(8080);

但我得到

TypeError: Cannot read property 'handle' of undefined

由于我是 node 的新手,我不确定这个过程是否像本文中提到的设置代理等一样复杂 thread

基本上我正在寻找将我所有的应用程序部署在同一个端口并像 localhost:8080/app1, localhost:8080/app2

一样访问它们

我需要 nginx 和代理来实现这个吗?

同样在 ec2 实例中,我可以通过进入 app1 文件夹并键入节点 server.js 运行 我的节点应用程序,这样该应用程序将在端口 8080 中列出,但是当我按 ctrl c 执行其他操作时任务,它终止了应用程序。

您需要为每个应用使用一个变量,然后使用它。尝试:

var app1 = require('./app1/server.js').app
var app2 = require('./app2/server.js').app
app.use('/app1', app1).use('/app2', app2).listen(8080);

您不需要 nginx/proxy 来处理这个问题。据我所知,如果你的 app1|app2/server.js-s 是这样构建的,你的代码应该可以工作:

var express = require('express');
var app = express();

app.get('/hello', function() {...})

module.exports = {
    app: app
}

现在您可以向 /app1/hello 和 /app2/hello

发送 GET 请求