2010-07-06 7 views
27

Von dem, was ich verstehe Node.js braucht nicht NginX als http-Server (oder ein Websockets-Server oder irgendein Server für diese Angelegenheit) zu arbeiten, aber ich lese weiter darüber, wie NginX anstelle von Node.js internen Server zu verwenden und nicht finden kann aus einem guten Grund, so zu gehenWelchen Nutzen hat die Verwendung von NginX für Node.js?

+0

Ich denke, es ist besser geeignet für ServerFault. – mbq

+4

nein es ist nicht für serverfault – mamu

+0

Ok, ich werde nicht streiten ;-) – mbq

Antwort

28

Hier http://developer.yahoo.com/yui/theater/video.php?v=dahl-node Node.js Autor sagt, dass Node.js ist immer noch in der Entwicklung und so kann es Sicherheitsprobleme, die NginX einfach versteckt.
Auf der anderen Seite kann NginX im Falle eines starken Datenverkehrs den Job auf viele Node.js verteilen, auf denen Server laufen.

+0

oh danke! Endlich eine befriedigende Antwort. Doppelt danke für den Link – Purefan

9

Aber seien Sie darauf vorbereitet: nginx unterstützt http 1.1 nicht, während Sie mit dem Backend sprechen, so dass Funktionen wie keep-alive oder websockets nicht funktionieren, wenn Sie Knoten hinter den nginx setzen.

UPD: siehe nginx 1.2.0 - socket.io - HTTP/1.1 - Proxy websocket connections für aktuellere Informationen.

+0

Ich verstehe nicht, etwas Material erklären, dass? – rizidoro

+2

Was er meint ist, dass NginX kann Http 1.1 zu Clients mit ihm verbinden, aber nicht zu Proxy-Servern, zum Beispiel, wenn Sie eine NodeJS-Anwendung, die Socket.io und Sie eine Verbindung zu dieser Anwendung über NginX verbinden, wird es einfach funktioniert nicht für websockets – Purefan

+1

Nginx tut [unterstützt HTTP 1.1 seit Version 1.2.0] (http://wiki.ninx.org/Main). Können Sie bitte Ihre Antwort aktualisieren? –

8

Zusätzlich zu den vorherigen Antworten gibt es einen weiteren praktischen Grund, nginx vor Node.js zu verwenden, und zwar einfach deshalb, weil Sie mehr als eine Node-App auf Ihrem Server ausführen möchten.

Wenn eine Knoten-App Port 80 überwacht, sind Sie auf diese eine App beschränkt. Wenn nginx Port 80 überwacht, kann er die Anforderungen an mehrere Knoten-Apps weitergeben, die auf anderen Ports ausgeführt werden.

Es ist auch bequem, TLS/SSL/HTTPS zu Nginx zu delegieren. Es ist zwar möglich, TLS direkt in Node auszuführen, aber es ist mehr Arbeit und fehleranfällig. Mit Nginx (oder einem anderen Proxy) vor Ihrer App müssen Sie sich keine Gedanken darüber machen und es gibt tools to help you securely configure it.

Verwandte Themen