在同一端口ec2中运行多节点应用程序

我来自java背景,我开始使用节点js,现在我爱它。 我已经阅读了其他类似于我的问题,即时通讯发布之前的线程。

我有3个不同的节点应用程序(应用程序1,应用程序2,应用程序3)通常,如果它在Java中我将在tomcat中部署三个应用程序,并可以像localhost:8080 / app1,localhost:8080 / app2等本地访问它们。方法在节点js。 我已经读了这个线程并且在全局安装了express,并且用这个代码创build了一个名为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:无法读取未定义的属性“句柄”

由于即时通讯新节点,即时通讯不知道这个过程是复杂的,如设置代理等在这个线程中提到的

基本上即时通讯寻找部署我所有的应用程序在同一端口,并访问他们像本地主机:8080 / app1,localhost:8080 / app2

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

另外在EC2实例中,我可以通过进入app1文件夹并input节点server.js来运行我的节点应用程序,以便应用程序将在端口8080中列出,但是当我按Ctrl c做其他任务时,它终止了应用程序。

你不需要nginx / proxy来处理这个。 从我可以看到你的代码应该工作,如果你的app1 | app2 / server.js-s是这样构build的:

var express = require('express'); var app = express(); app.get('/hello', function() {...}) module.exports = { app: app } 

现在你可以发送GET请求到/ app1 / hello和/ app2 / hello

您需要为每个应用程序使用一个variables,然后使用它。 尝试:

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