【问题标题】:Run Multiple node application in same port ec2在同一端口 ec2 中运行多节点应用程序
【发布时间】:2016-05-20 13:56:49
【问题描述】:

我来自 java 背景,我开始使用 node 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: 无法读取未定义的属性“句柄”

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

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

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

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

【问题讨论】:

  • 根据 app1、app2 服务器文件,这个逻辑应该可以工作,你是否从这些文件中导出 express 实例?你可以向我们展示 server.js-s 的样子。
  • @user1695032:我的 app1 和 app2 是独立的 express 应用程序,因此 server.js 将拥有我所有的路由和我配置的其他参数

标签: node.js amazon-ec2 port


【解决方案1】:

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

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

【讨论】:

  • 有自动的方法吗?使用一些外部工具,如 pm2 或类似的东西,有没有办法像在 Apache 中那样做(只需在其中放入另一个目录,你就可以开始了)?
【解决方案2】:

你不需要 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 请求

【讨论】:

  • 我错过了 server.js 中的导出部分,而是配置为侦听 server.js 本身,因此现在可以导出应用程序
猜你喜欢
  • 2017-01-21
  • 2012-06-28
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2020-01-21
相关资源
最近更新 更多