组合多个 node.js Web 应用程序

Posted

技术标签:

【中文标题】组合多个 node.js Web 应用程序【英文标题】:Combine multiple node.js web applications 【发布时间】:2013-09-02 09:53:42 【问题描述】:

我正在尝试找出实现这一目标的最佳方法;基本上我有大约 6 个网站需要上网,但目前它们的流量几乎为零,因此为了节省资金,它们需要部署在同一台服务器上(理想情况下,我们将使用 AWS 的 Elastic BeanStalk)。

有没有一种方法可以像平常一样基本上编写每个 Web 应用程序(以便将来可以轻松地将它们转移到专用服务器),但有一个 app.js 入口点可以根据 URL 适当地加载节点应用程序?

显然这并不理想,但我已经想到了几种方法来做到这一点,但我希望尽可能不被黑客攻击,以便以后可以轻松移动网站。

【问题讨论】:

将它们作为单独的进程运行有什么问题?如果您只是想将请求转发到特定节点,我想很多人都在使用 nginx 老实说不多;真的是在寻找一个临时且快速的解决方案,因为我们已经在 Elastic BeanStalk 中设置了一些东西,所以在不把我们搞砸的情况下重用它会很棒。但是,是的,这是一种选择(也是更合适的选择)。 【参考方案1】:

使用连接虚拟主机。 http://www.senchalabs.org/connect/vhost.html

var express = require('express'),
    main = express();

main.use(express.vhost('*.site1.com', require('../site1')));
main.use(express.vhost('*.site2.com', require('../site2')));

main.listen(80);

../site1/index.js 可能看起来像这样:

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

app.get('/', function(req, res)  res.send('Home Page'); );

module.exports = app;

【讨论】:

是的,这很完美;显然我没有意识到 vhost 可以与整个应用程序一起使用,但这是有道理的。谢谢!希望很快它可以转移到更好的解决方案。 大家好,这是否意味着 Elastic Beanstalk 应用程序将根据需要进行扩展,例如,如果只有一个应用程序获得高流量/使用率?我正在寻找一种方法来部署几个需要扩展的 nodeJS 应用程序,但每个应用程序没有一个单独的服务器。有意义吗?

以上是关于组合多个 node.js Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Express - 基于 Node.js 平台的 web 应用开发框架

如何通过 firebase 托管在 firebase 上托管 node.js Web 应用程序(包含多个文件夹)?

express js 可以做啥

Koa--基于Node.js平台的下一代web开发框架的安装

koa-基于node.js平台的下一代web开发框架入门

如何创建高性能可扩展的Node.js应用?