我正在使用一台服务器来托管多个 Node.js Web 应用程序,这些应用程序分布在多个域中。我目前的做法是在不同的端口上为每个应用程序运行一个 Express 服务器,并运行一个简单地将请求路由(重定向)到正确端口/Express 服务器的基本服务器。这可行,但这意味着我的基础服务器正在路由每个 HTTP 请求(并通过手动重定向它),并且我的用户将我的应用程序视为托管在 [hostname.com]:8000。
经过一番研究,我发现我可以使用http-proxy来满足我的路由需求,但我仍然想知道是否有在同一系统上运行多个 Express 服务器的最佳实践。这是我打算这样做的方式:
每个 Web 应用程序都有自己的文件夹,具有完整的 Express 文件夹结构(app.js、路由、视图等)。应用程序将按域分组,因此示例文件夹结构如下:
hostname.com/
app.js
routes/
views/
...
app1/
app1.js
routes/
views/
...
app2
...
hostname2.com/
app.js
routes/
views/
...
我必须使用 node (或使用forever,我目前正在使用)分别运行每个 app.js ,并且每个人都必须在内部使用不同的端口,跨应用程序重定向指向目标应用程序。
所以,这就是我目前的计划。它有什么问题,我应该尽量避免哪些陷阱?最重要的是,这个问题是否有既定的解决方案——使用 Node.js/Express 在同一系统上托管多个 Web 应用程序的问题?
编辑:我确实计划最终使用 WebSockets 和 HTTPS,我的设置可以支持的带宽量对我来说并不重要——这是一个开发服务器(至少现在是这样)。感谢 David Ellis 提出 WebSockets 的问题。
第二次编辑:感谢 EhevuTov 和 David Ellis 的回答,他们都帮了大忙。我仍在为我的应用程序确定一个整体结构,看起来这个问题在这个 StackOverflow 问题中得到了一些详细的解决
第三次编辑:自从发布这个问题以来,我已经走了一段路(尽管我还有很长的路要走)。在我的 GitHub 存储库中查看这个文件,它利用了我从这个问题的答案中学到的知识!