Antworten:
Es gibt mehrere gute Gründe, einen anderen Webserver vor Node.js zu stellen:
Ich werde den zweiten Punkt einschränken, indem ich sage, dass Sie Ihre statischen Dateien wahrscheinlich über ein CDN oder hinter einem Caching-Server wie Varnish bereitstellen sollten. Wenn Sie dies tun, spielt es keine Rolle, ob der Ursprung Node oder Nginx oder Apache ist.
Vorsichtsmaßnahme speziell für Nginx: Wenn Sie Websockets verwenden, stellen Sie sicher, dass Sie eine aktuelle Version von Nginx (> = 1.3.13) verwenden, da dies gerade erst die Unterstützung für das Upgrade einer Verbindung zur Verwendung von Websockets hinzugefügt hat.
:80
ohne den Knoten als Root auszuführen, indem Sie einfach authbind verwenden: thomashunter.name/blog/using-authbind-with-node-js
Um der Antwort von pauljz noch einen weiteren Grund hinzuzufügen, verwende ich einen Front-End-Server, damit beim Neustart des Back-End-Servers oder beim Absturz aus irgendeinem Grund 502 Fehlerseiten angezeigt werden können. Auf diese Weise erhalten Ihre Benutzer niemals die Fehlermeldung, dass keine Verbindung hergestellt werden kann.
Ich bin davon überzeugt, dass die Verwendung von Node zum Bereitstellen statischer Dateien unter allen Umständen in Ordnung ist, solange Sie wissen, was Sie tun . Es ist sicherlich ein neues Paradigma, den Anwendungsserver zu verwenden, um statische Dateien bereitzustellen, da so viele (alle?) Konkurrierende Technologien (PHP, Ruby, Python usw.) einen Webserver wie HTTPD oder Nginx vor den Anwendungsservern erfordern. .
Jeder objektive Grund, den ich jemals gegen das Bereitstellen statischer Dateien mit Node gelesen habe, dreht sich um die Idee, das zu verwenden, was Sie am besten wissen oder was als besser getestet / stabiler wahrgenommen wird. Dies sind praktisch sehr gute Gründe, haben aber wenig rein technische Relevanz.
Wenn Sie keine Funktion finden, die mit einem klassischen Webserver möglich ist, die mit Node nicht möglich ist (und ich bezweifle, dass Sie dies tun werden), wählen Sie, was Sie am besten wissen oder mit was Sie lieber arbeiten möchten, da beide Ansätze in Ordnung sind.
Was Nginx gegen Apache betrifft - sie werden mit Node gleich "spielen". Sie sollten sie ohne Rücksicht auf Node vergleichen.
systemd
, pm2
usw. So gibt es Vor- und Nachteile und der Benutzer sollte ihr Gift wählen, sozusagen .
express.static
wird ETags und Cache-Control-Header gut verarbeiten.