我正在使用一个服务器托管多个分布在多个域上的Node.js Web应用。我的当前做法是在不同的端口上运行每个应用程序的Express服务器,并运行一个基础服务器,仅将请求路由(重定向)到正确的端口/Express服务器。这样可以工作,但意味着我的基础服务器正在路由每个HTTP请求(并通过手动重定向),而我的用户将我的应用程序视为托管在[hostname.com]:8000。
经过一些研究,我发现我可以使用http-proxy来满足我的路由需求,但我仍然想知道在同一系统上运行多个Express服务器的最佳实践。以下是我的计划:
每个Web应用程序都将拥有自己的文件夹,具有完整的Express文件夹结构(app.js、routes、views等)。应用程序将按域分组,因此示例文件夹结构如下:
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存储库中的此文件,它利用了我从这个问题的答案中学到的东西!