用于生产的 Nodejs 网络服务器

Posted

技术标签:

【中文标题】用于生产的 Nodejs 网络服务器【英文标题】:Nodejs webserver for production 【发布时间】:2011-12-10 22:27:29 【问题描述】:

对常见问题的一点更新。从当前版本的 Nodejs v0.6.5 开始,在生产环境中将其作为 Web 服务器运行是否安全?我真的想跳过使用 nginx 例如代理的步骤。我将使用 Expressjs、nowjs、gzippo。并且 nginx 还不支持 websockets,而且通过 ssl 设置 socket.io 有点困难。除了更好地服务静态文件之外,nginx 还有其他好处吗?

对这个问题有什么建议吗?如果可以作为网络服务器运行,还有其他值得考虑的模块吗?

【问题讨论】:

查看 1.1.5 中 nginx 中的开发分支,在 http 代理模块 nginx.org/en/CHANGES 中有一个 http 1.1 的 BUGFIX@ 根据我的经验,如果你想在 ssl 后面运行 socket.io,你需要将传输限制为 xhr-polling 和 jsonp-polling。这些传输在每个浏览器中都有效,socket.io 甚至可以处理跨域问题。我们在所有其他交通工具上都遇到了问题。好处是,如果您使用这两种传输方式,则可以使用 nginx 或其他代理。 【参考方案1】:

说实话,除了提供静态文件之外,我并没有真正看到任何重要的好处(尽管 Nginx 可能有更多特定于服务器的扩展)。

您可能还想使用bouncy 或node-http-proxy 进行代理,并使用browserify 在前端使用您的服务器端模块。

编辑:据我所知Trello 和其他websites 也在使用它。

【讨论】:

这真是个好消息 :) 因为它现在对我来说简化了很多。这些模块是拼图中最后缺失的部分。谢谢【参考方案2】:

除了提供静态文件之外,Nginx 的其他好处。

即使需要非压缩文件,您也可以动态压缩或加载 .gz 文件。 您可以缓存任何内容的生成,减少对 node.js 的回调。 您可以让它路由到节点应用服务器集群 很多其他整洁的东西http://wiki.nginx.org/Modules

虽然不需要使用 nginx,但运行节点前没有任何内容是完全可以的。

【讨论】:

"你可以让它路由到节点应用服务器集群" 是的,但他问的是 Nginx 的好处。 Node 可以做大部分事情,如果不是 Nginx 可以做的一切。节点只是事件 I/O。但是在您的应用程序代码必须触发并处理它之前发生这些事情可能是有益的。对于集群,我只是在一个盒子外面说话。让 nginx 集群多台服务器非常容易。是的,节点也可以,但你必须编写所有的处理、检查等。 +1 仅仅因为你可以在 node 中做事并不意味着你应该在 node 中做所有事情! (用您选择的语言替换节点)

以上是关于用于生产的 Nodejs 网络服务器的主要内容,如果未能解决你的问题,请参考以下文章

nodeJS之TCP模块net

nodeJS之TCP模块net

使用nodejs在网络服务器中存储变量并表达[关闭]

NodeJS 难点(网络,文件)的 核心 stream 三:readable ?

将大文件上传到 NodeJS 网络服务器

我可以从 NodeJs 服务器访问网页上的网络流量数据吗?