从我的理解Node.js不需要NginX作为http服务器(或websockets服务器或任何服务器),但我一直在阅读如何使用NginX而不是Node.js内部服务器和cant找到一个很好的理由去那样
答案 0 :(得分:29)
这里http://developer.yahoo.com/yui/theater/video.php?v=dahl-node Node.js作者说Node.js仍在开发中,因此可能存在NginX隐藏的安全问题。
另一方面,在流量很大的情况下,NginX将能够在运行服务器的许多Node.j之间拆分作业。
答案 1 :(得分:9)
但要做好准备:nginx在与后端通信时不支持http 1.1,所以如果你把节点放在nginx后面,那么诸如keep-alive或websockets之类的功能将无效。
UPD:请参阅nginx 1.2.0 - socket.io - HTTP/1.1 - Proxy websocket connections了解更多最新信息。
答案 2 :(得分:8)
除了之前的答案,还有另一个在Node.js前面使用nginx的实际原因,这只是因为您可能希望在服务器上运行多个Node应用程序。
如果Node应用程序正在侦听端口80,则您只能使用该应用程序。如果nginx正在侦听端口80,它可以将请求代理到在其他端口上运行的多个Node应用程序。
将TLS / SSL / HTTPS委托给Nginx也很方便。可以直接在Node中执行TLS,但这是额外的工作并且容易出错。使用Nginx(或其他代理)在您的应用前,您不必担心它,并且tools to help you securely configure it。