在同一端口ec2

时间:2016-02-10 09:37:29

标签: node.js amazon-ec2 port

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

我有3个不同的节点应用程序(app 1,app2,app3) 通常,如果它在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',   要求(' ./ app2 / server.js')。app).listen(8080);

但即将到来

  

TypeError:无法读取属性'处理'未定义的

由于我是节点新手,我不确定这个过程是否像设置代理等一样复杂,如thread

中所述

基本上我正在寻找在同一个端口部署所有应用程序并访问它们,如localhost:8080 / app1,localhost:8080 / app2

我需要nginx和代理才能实现这个目标吗?

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

module.exports = {
    app: app
}

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