【问题标题】:Host multiple site with node.js使用 node.js 托管多个站点
【发布时间】:2012-08-09 19:45:06
【问题描述】:

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

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

欢迎提出任何建议。

【问题讨论】:

  • 我认为这取决于你在做什么,但我建议运行多个节点进程(即使它是同一个程序),然后使用 nginx 进行路由。您是更想探索方法,还是有想要解决的特定问题?
  • 更多探索方法。我希望能够使用 node.js 托管多个网站,所以只是想知道最好的方法。

标签: node.js webserver


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-11
      • 2012-05-10
      • 2011-05-02
      • 2011-04-09
      • 2012-02-11
      • 2016-10-31
      • 2014-08-13
      • 1970-01-01
      相关资源
      最近更新 更多