【问题标题】:What is the main purpose of NodeJS internal HTTP Web Server?NodeJS 内部 HTTP Web Server 的主要用途是什么?
【发布时间】:2014-04-01 10:15:01
【问题描述】:

我目前正在学习 NodeJS,对此我感到非常兴奋。 但这里有一件我不确定并且需要帮助的事情。

我们知道 NodeJS 有自己的内部 http web 服务器,我们可以简单地使用http.createServer() 方法创建。

我的问题是:

  1. NodeJS 拥有的内部 http web 服务器是否旨在取代类似的 http web 服务器,如 Apache 或 Nginx?
  2. 如果我需要创建企业级应用程序,NodeJS 内部 Web 服务是否能够做到这一点?还是我还需要使用 Apache/Nginx?

请帮忙。谢谢你。 阿德里安

【问题讨论】:

  • 是的,它是替代 Apache 和喜欢的,但是每个解决方案都有自己的优点和缺点。
  • 我不确定企业级应用程序,但 Node.js 非常适合创建实时应用程序(例如聊天)。如果您对它感兴趣,您可能会发现socket.io 很有用。
  • 谢谢大家,在阅读了您的回答和 cmets 之后,我终于决定使用 NodeJS http web server ONLY,因为它已经通过了我能想到的各种压力测试。我考虑的另一件事是该 Web 服务器将仅提供静态文件。所以上帝帮助我,我做出了正确的决定。

标签: node.js apache nginx


【解决方案1】:
  1. node.js 不需要像 Apache 或 nginx 这样的 Web 服务器,它是自己的 Web 服务器。
  2. Walmart 已将 node 用于,用他们的话说,“end-to-end javascript”......这当然是企业规模的,尽管他们没有明确表示他们依赖于 http.createServer,端到端 javascript会消除 Apache 或 nginx,我怀疑他们已经开发了一些奇特的解决方案(尽管 socket.io 是可能的)......一般来说,如果你在网络上使用节点,你正在使用内置的网络服务器至少有一些容量。

在前端使用 nginx 作为反向代理/静态文件服务器可能有一些好处。如果我正在设计我的“完美系统”,我可能会这样做,但我仍然会将请求传回节点中的内置 Web 服务器。

【讨论】:

  • 如果您在连接到 www.walmart.com 时检查响应标头,则其中一个字段是“服务器:Apache-Coyote/1.1”。 Coyote 是 Tomcat 的一部分,它用于服务 Java servlet。
  • 我确实相信他们所指的“端到端 javascript”是一个应用程序,而不是他们的完整网站,但它是在黑色星期五部署的并且经历了极端负载,所以规模是没有问题。
【解决方案2】:

您不需要将 Apache 或 Nginx 与 node.js 一起使用,但在实践中,这可能是一个好主意。

基本上,Apache 将位于您的 node.js 前面,并使用 mod_rewrite 之类的东西将请求中继到您的节点应用程序。

node http 服务器模块非常适合启动快速应用程序,但如果您需要 SSL、复杂的 mod_rewrites、目录安全、详细日志等(即商业应用程序中需要的所有东西),您需要 (或者至少,它更容易)在节点前使用 Apache 或 Nginx。

【讨论】:

  • 使用过 Apache 和 node,我不同意在 Apache 中做这些事情更容易。具体来说,SSL 在节点中非常容易,mod_rewrite 在节点中并不真正相关(或者至少,实现相同目标的方法是直观而直接的,而不是我在 Apache 中经常遇到的混乱)...... nginx可能是另一回事。我建议使用除 Apache+node 之外的任何其他设置,这并不是说它本身很糟糕,但是那里有更好的选择。
猜你喜欢
  • 2021-08-26
  • 2010-10-17
  • 2023-03-31
  • 2020-06-25
  • 1970-01-01
  • 2011-11-09
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多