2010-07-06 134 views
27

根据我的理解,Node.js并不需要NginX作为http服务器(或者websockets服务器或任何服务器),但我一直在阅读如何使用NginX而不是Node.js内部服务器并找不到这是一个很好的理由去这样对Node.js使用Nginx有什么好处?

+0

我认为它更适合于ServerFault。 – mbq 2010-07-06 13:11:23

+4

不,它不适用于服务器故障 – mamu 2010-07-07 15:33:42

+0

好吧,我不会争辩;-) – mbq 2010-07-18 21:47:35

回答

28

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

+0

哦,谢谢你!最后一个满意的答案。 双感谢链接 – Purefan 2010-07-06 21:16:16

9

但要做好准备:nginx在与后端交谈时不支持http 1.1,因此如果将节点放在nginx后面,keep-alive或websockets等功能将不起作用。

UPD:有关最新信息,请参阅nginx 1.2.0 - socket.io - HTTP/1.1 - Proxy websocket connections

+0

我不明白,有一些材料解释说? – rizidoro 2011-09-14 16:43:29

+2

他的意思是,Nginx可以将Http 1.1与连接到他的客户端进行通信,但不会与代理服务器通信,例如,如果您有一个实现Socket.io的NodeJS应用程序,并且您通过NginX连接到该应用程序,不适用于websocket – Purefan 2011-09-26 06:52:45

+1

Nginx确实[支持自1.2.0版以来的HTTP 1.1](http://wiki.nginx.org/Main)。你能否更新你的答案? – 2013-02-11 09:09:42

8

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

如果Node应用程序正在侦听端口80,那么您仅限于该应用程序。如果nginx正在侦听端口80,它可以将请求代理到运行在其他端口上的多个节点应用程序。

将TLS/SSL/HTTPS委托给Nginx也很方便。在Node中直接执行TLS是可能的,但这是额外的工作并且容易出错。使用Nginx(或其他代理)在您的应用程序前,您不必担心它,并且有tools to help you securely configure it