用node做服务器了,还需要nginx吗?
发布于 10 年前 作者 ASCII26 64660 次浏览 最后一次编辑是 8 年前 来自 问答

如题,有谁能够分析一下这二者在请求处理时候的优劣,到底是只采用Node就好,还是node+nginx比较好?

23 回复

可以只用 node ,也可以用 nginx 做代理,或者用 passenger 来部署

nginx的优势在负载均衡和静态文件处理。你拿node做静态服务和动态服务均可,但稳定性不如nginx。当然二次转发对性能有损伤,也会有不少坑需要踩

当然是Nginx+Node比较好,除了Nginx来处理静态文件请求和记录web访问日志这种显而易见的好处不说。

单独用Node你如何处理单个IP上的多个Virtual Host,Node的确有办法,你可以搜索一下看看,但是放到Nginx这里根本就不是个事儿。

Nginx + Node绝对比单纯的Node更好。

我觉得肯定需要呀,就像Tomcat做了服务器为什么还需要Nginx呢? Node能够运行javascript代码,但是处理静态资源的能力不如Nginx。也就是所谓的应用服务器与web服务器吧……

@xiaojue Nginx proxy pass到Node那点转发根本损失不了多少性能。坑可能是有点,不过这些坑已经有无数人踩过,只要善用搜索引擎都会有解决方法。

@yeaha 恩呢,我一直都是nginx做转发和负载的,但是这些确定也要告诉LZ么。

用 nginx 做反向代理和静态资源嘛。

不过静态资源现在用 cdn 来做的话,也可以只利用它的反向代理。

如果只有一个网站的话,不反向代理也可以。

多谢各位!一下子豁然开朗了!

@xiaojue 那我也试试~其实单用node也有不少坑。。。

@xiaojue 其实呢,我主要是觉得简单的说性能损伤可能会吓到新手,就像有些人宣称面向对象的方式会影响性能一样,真要说影响性能也没错,但真的不是啥问题,且利大于弊。你我这种过来人倒无所谓,都知道不是啥问题,但是新手难说及就可能驻足不前,有问题就直接把问题点出来就好。

hipache + redis 动态反向代理, hipache是nodejs开发的,对于咱们使用nodejs的同学还可以很方便的去扩展它

用不了nginx只用上node,已经作好各种踩坑的准备

@hades 为啥用不了?

@yeaha 是的,新手一般不太敢轻易采取某个技术,都是各种观望,看大家怎么评论怎么说,非常容易受影响

nginx有很多附加的模块,比如重写,压缩,代理,缓存,日志,虚拟主机,ssh,这些工作如果用nodejs来做的话,不一定比nginx高效稳定

nginx是超越apache的东西,应该必须使用

看业务场景把,凭空砍大山,No use~

@alsotang 建议就算单个应用也还是前面放一个Nginx或Tengine好,Nginx反向代理、负载均衡以及资源占用各方面均优于Node.js,Tengine还有一些方便的扩展~

@snoopy 单应用的话,首先反向代理用不着。

负载均衡?nginx 的负载均衡是用在多机器环境下的,单机的负载均衡还是要靠 cluster 这类模块来做。

资源占用,nginx + node 比 单一的 node 占用资源更多吧。

和 nginx 比起来,node 现在差不多就是个玩具。

@alsotang 你说的对,单机node的负载均衡还是用cluster,多机的话用nginx靠谱,另外资源占用我是比较了nginx和node做反向代理时的占用,单独的node肯定比nginx+node占用资源少,我还是习惯在服务器上搞个nginx,以后再要新加站点来的方便。

@snoopy 其实我也是习惯搞个 nginx 的,现在 cnode 的机器上只有一个 cnode 在跑,也是跑在 nginx 后面。

不知道为什么都在说nginx,我觉得haproxy和node的搭配明显更舒适。

回到顶部