《轻量级微服务架构》一书中经过node.js cluster做为反向代理层。当时就有疑问为啥不用nginx。他们都是经过事件回调异步模式。html
node.js自己是采用单线程模型 。而经过cluster可使每一个cpu内核都运行一个node.js。node
nginx是以多进程方式工做的,在启动后,会有一个master进程和多个worker进程。nginx
《Node.js process load balance performance》一文对nginx/node.js cluster/iptables的性能作了测试,结论是nginx性能更好。服务器
因此一般node.js 还要配合nginx来使用架构
为何要在Nodejs上加Nginx反向代理,缘由概括以下: 1. 用Nginx来作静态资源的反向代理,减小Nodejs的压力; 2. Nginx自带日志功能,能够不必Nodejs去处理这个问题了 3. Nginx用来作负载均衡,增长横向扩展性 4. 假如一台服务器多个Nodejs站点,或则一个域名下挂多个站点或不一样中语言的站点。有个反向代理均可以处理。
Reference:负载均衡