3

我目前正在学习 node.js 并喜欢它。然而,我注意到它似乎真的只适合一个站点。所以它非常适合托管 mydomain.com,但是如果我想用它构建一个真正的完整 Web 服务器怎么办。换句话说,我想托管 mydomain.com、example.com、yourdomain.com 等。有哪些可用的解决方案(模块)?我正在考虑简单地从请求对象中解析 url 并简单地从适当的目录中读取。例如,如果我收到对 example.com 的请求,然后从 example_com 目录读取,或者如果我收到来自 mydomain.com 的请求,则从 mydomain_com 目录读取。这里的问题是我不知道这将如何影响性能和可伸缩性。

我已经研究了多节点,但我还没有完全遵循流程的想法(我是节点初学者)。

欢迎任何建议。

4

2 回答 2

4

您可以通过几种不同的方式做到这一点。一种方法是通过检查向哪个域发出请求,然后在您的应用程序中路由,将其直接写入您的 Web 应用程序,但除非您的应用程序非常基础,否则这可能会使其相当臃肿并且变得混乱。如果您正在编写一个博客平台,在该平台上,所有域中的所有内容都几乎相同,则可能是进行此类操作的好时机。关键区别可能在于您如何查询数据以显示正确的数据。

在这种情况下,您可能会使用请求来查看正在访问的博客。

如果您只想在同一台服务器上托管几个不同的域,都使用端口 80(就像大多数网站一样),您需要将每个请求代理到不同的进程。您可以使用 nginx 甚至节点本身来执行此操作。这一切都归结为最适合您的需求。bouncy是一种快速设置的方法,它是一个 nodejs 模块,并且有一些非常令人印象深刻的基准测试。nginx(使用 nginx 的代理)可能是最广泛使用的方法,因为许多 nodejs 服务器无论如何都使用 nginx 来提供静态内容。

http://blog.noort.be/2011/03/07/node-js-on-nginx.html https://github.com/substack/bouncy/

于 2012-08-09T20:22:24.900 回答
0

您可以使用 connect 的vhost中间件(也可以在 express 中使用)根据Host:标头将请求分派到单独的请求处理程序。这假设所有事情都由同一端口上的同一节点进程处理;如果你真的需要单独的进程,那么关于使用 nginx 作为反向代理的建议可能是要走的路。

于 2012-08-09T21:58:41.513 回答