《輕量級微服務架構》一書中經過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:負載均衡