最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

我应如何在同一系统上组织多台Express服务器?

运维笔记admin6浏览0评论

我应如何在同一系统上组织多台Express服务器?

我应如何在同一系统上组织多台Express服务器?

我正在使用一台服务器托管多个Node.js Web应用程序,这些Web应用程序分布在多个域中。我目前的做法是在不同端口上为每个应用程序运行Express服务器,并运行基本服务器,该服务器仅将请求路由(重定向)到正确的端口/ Express服务器。这可行,但是这意味着我的基本服务器正在路由每个HTTP请求(并通过手动重定向它),并且我的用户看到我的应用托管在[hostname]:8000。

[经过一番研究后,我发现可以使用http-proxy满足我的路由需求,但是我仍然想知道是否存在在同一系统上运行多个Express服务器的最佳实践。这是我打算做的事情:

每个网络应用都有自己的文件夹,具有完整的Express文件夹结构(app.js,路线,视图等)。应用将按域分组,因此示例文件夹结构为:

    hostname/
        app.js
        routes/
        views/
        ...
        app1/
            app1.js
            routes/
            views/
            ...
        app2
        ...
    hostname2/
        app.js
        routes/
        views/
        ...

我必须分别用node(或我当前正在使用的forever)运行每个app.js,并且每个内部都必须使用不同的端口,并指向跨应用程序重定向目标应用程序的端口。

所以,这是我目前的计划。它有什么问题,我应该避免哪些陷阱?最重要的是,是否存在解决此问题的解决方案-使用Node.js / Express在同一系统上托管多个Web应用程序的问题?

编辑:我确实打算最终使用WebSockets和HTTPS,并且我的安装程序可以支持的带宽数量对我而言并不重要-这是一台开发服务器(至少现在是这样)。感谢David Ellis提出了WebSockets问题。

[第二编辑:感谢EhevuTov和David Ellis的回答,两者都提供了很大帮助。我仍在为我的应用程序确定总体结构,this StackOverflow question

似乎更详细地说明了这个问题。

第三次编辑:自发布此问题以来,我已经走了一条路(尽管我还有很多路要走)。查看this file in my GitHub repository,它利用了我从该问题的答案中学到的知识!

回答如下:

由于Express使用Connect,所以我很确定您可以使用Connect的虚拟主机中间件。它的操作类似于其他产品上的其他vhost模块。我没有多个域可以测试并向您显示正确的代码,但是我认为它是这样的:

express.createServer()
.use(express.vhost('hostname1', require('/path/to/hostname1').app)
.use(express.vhost('hostname2', require('/path/to/hostname2').app)
.listen(80)

如果到达一台Express服务器还不够的程度,请考虑使用API​​中的Node.Cluster。如果这还不够的话,那么当前的做法是在Express服务器前放置一个Nnyx之类的asnyc反向代理,并将代理指向Express服务器。

发布评论

评论列表(0)

  1. 暂无评论