2010-07-06 71 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