使用NginX for Node.js有什么好处?

Pur*_*fan 28 nginx node.js

从我的理解Node.js不需要NginX作为http服务器(或websockets服务器或任何服务器),但我一直在阅读有关如何使用NginX而不是Node.js内部服务器并且无法找到这样做的理由很充分

mbq*_*mbq 29

这里http://developer.yahoo.com/yui/theater/video.php?v=dahl-node Node.js作者说Node.js仍在开发中,因此可能存在NginX隐藏的安全问题.
另一方面,在流量很大的情况下,NginX将能够在运行服务器的许多Node.js之间拆分作业.


Mik*_*bov 9

但要做好准备:nginx在与后端通信时不支持http 1.1,所以如果你把节点放在nginx后面,那么诸如keep-alive或websockets之类的功能将无法工作.

UPD:请参阅nginx 1.2.0 - socket.io - HTTP/1.1 - 代理websocket连接以获取更多最新信息.

  • 他的意思是NginX可以将Http 1.1与连接到他的客户端进行对话,而不是代理服务器,例如,如果您有一个实现Socket.io的NodeJS应用程序,并且您通过NginX连接到该应用程序,它根本就不会为websockets工作 (2认同)
  • Nginx确实[自版本1.2.0起支持HTTP 1.1](http://wiki.nginx.org/Main)。您能否更新您的答案? (2认同)

Nat*_*ate 8

除了之前的答案,还有另一个在Node.js前面使用nginx的实际原因,这只是因为您可能希望在服务器上运行多个Node应用程序.

如果Node应用程序正在侦听端口80,则您只能使用该应用程序.如果nginx正在侦听端口80,它可以将请求代理到在其他端口上运行的多个Node应用程序.

将TLS/SSL/HTTPS委托给Nginx也很方便.可以直接在Node中执行TLS,但这是额外的工作并且容易出错.使用Nginx(或其他代理)在您的应用程序前面,您不必担心它,并且有一些工具可以帮助您安全地配置它.