根据我的理解,Node.js不需要NginX作为http服务器(或者websockets服务器或任何服务器),但是我一直在阅读如何使用NginX而不是Node.js内部服务器,很好的理由去这样的方式
这里http://developer.yahoo.com/yui/theater/video.php?v=dahl-node Node.js的作者说Node.js还在开发中,所以Nginx可能会隐藏一些安全问题。
另一方面,在流量很大的情况下,Nginx将能够在运行多个服务器的Node.js之间分割作业。
但要做好准备:nginx在与后端交谈时不支持http 1.1,所以如果将节点放在nginx后面,keep-alive或websocket等功能将不起作用。
UPD:参见nginx 1.2.0 – socket.io – HTTP / 1.1 -更新最新信息的代理websocket连接 。
除了以前的答案之外,在Node.js前面使用nginx还有另外一个实际的原因,那只是因为你可能想在你的服务器上运行多个Node应用程序。
如果Node应用程序正在侦听端口80,那么您仅限于该应用程序。 如果nginx正在侦听端口80,它可以将请求代理到运行在其他端口上的多个节点应用程序。
将TLS / SSL / HTTPS委派给Nginx也很方便。 在Node中直接做TLS是可能的,但是这是额外的工作,并且容易出错。 使用Nginx(或其他代理)在您的应用程序之前,您不必担心它,并且有工具来帮助您安全地配置它 。