Node.js可以完全取代像Apache或NGINX这样的解决方案吗?

seb*_*piq 36 node.js

关于部署Node.js应用程序,我看到很多教程显示它与Nginx并排部署,或多或少的相同技巧允许2一起工作(和烦人的东西,如Nginx不支持WebSockets) .这对我来说似乎有点复杂......

为什么每个人都做这种设置?当Node.js提供任何优势时,部署Nginx会不会?你不能用Node.js提供静态文件吗?

我在Django中编写了很多应用程序,并且文档说你不应该使用Django来提供静态文件,因为它没有针对此进行优化等等......所以我想也许这就是原因.

Bor*_*nov 27

Apache和NGINX都是完全开发的Web服务器,提供大量现成的模块和服务.它们被认为是坚固的,并且已经证明了几年的稳定性.

拥有这种可用的解决方案,没有必要重新发明轮子.使用NGINX实现负载均衡器和路由并且不将NodeJS暴露给外部并在localhost上运行它可能更有利.

NodeJS不能被视为服务器软件,而只是JavaScript引擎和库/模块.它大量用于服务器脚本的事实并没有使它成为Web服务器.

如果您决定忽略上述内容并完全切换到NodeJS,我会考虑保留这样的解决方案.记录,启动/关闭脚本和监视可以使任务比看起来更复杂.

此外,为NodeJS编写的众多库往往会破坏新版本,因为NodeJS引入了重大变化.考虑到作为缺乏成熟度的价格.如果你能承担风险并且不怕问题,请选择NodeJS.

最后说明:静态文件可以与NodeJS一起提供.您的脚本可能会读取并将其推出.

更新:如果您决定使用Node.js,请考虑使用Express.js框架.

  • 嗯... node是一个构建web服务器的工具,比如node.js网站:"Node.js是一个平台,可以轻松构建快速,可扩展的网络应用程序." 我没有看到你的node.js app暴露在"外面"的问题! (2认同)

3on*_*3on 25

好吧有些人不介意使用Node而不是nginx.像dotCloudNodejistu这样的某些云使用完全用Node.js编写的网关.主要是为了能够处理websockets.但也因为Node.js很快.

这是dotCloud的网关,最近开源https://github.com/dotcloud/hipache

  • 只提供静态文件节点没有提供任何真正的优势,而不是nginx.对于需要围绕多个主机动态路由HTTP流量并支持websockets的网关,Node可能是最好的工具. (5认同)