Ich verwende NVM, um eine Sails-Webanwendung zu entwickeln. Ich habe den Knoten v0.12.7 über NVM installiert und verwende diese Version, um die Website auszuführen.Wie geht es mit NVM in Produktionsumgebungen?
nvm use 0.12.7
sails lift
Segel verwendet Port 1337 standardmäßig, aber für Produktionsumgebung wir es 443. Das Problem ändern ist, dass dieser Port Root-Rechte erfordert, und NVM ist nur für einen Benutzer installiert. Also, wenn ich versuche, sudo Segel Aufzug, bekomme ich eine Fehlermeldung, dass Segel nicht installiert ist.
Was ist der effektivste Weg, um mit diesem Problem umzugehen? Wie kann ich mit NVM mein Projekt entwickeln und bereitstellen?
Ich habe verschiedene mögliche Lösungen gedacht, aber ich weiß nicht, ob sie gut oder unsicher sind.
- Weiterleiten von Ports mit
iptables
. Das Problem damit ist, dass Socket nicht funktioniert, weil ein Proxy. - Ändern Sie die Berechtigungen für einen Port. Könnte ein Sicherheitsrisiko sein, wenn der Knoten Sicherheitslücken aufweist.
- Installieren Sie NVM mit Root. Das Problem ist, dass ich NVM verwende, um die Verwendung
sudo
für die Bereitstellung oder das Ausführen von Anwendungen zu vermeiden, und dies wird mich dazu zwingen.
Was sind die besten Praktiken in diesem Zusammenhang?
Vielen Dank im Voraus.
Warum funktionieren würde Lösung 1 nicht? Die Portweiterleitung ist keine Proxyfunktion. Wie auch immer, meine bevorzugte Lösung ist, immer einen kampferprobten Front-End-Server wie nginx oder apache2 zu haben und sie dann zum Reverse-Proxy der Web-App zu verwenden. Es gibt auch andere Vorteile, aber der Hauptgrund für mich wäre Sicherheit - es fügt eine weitere Schicht hinzu, um zu hacken. – slebetman
Zustimmen - Reverse-Proxy über Nginx funktioniert perfekt für dieses Szenario einschließlich der Sockets. Ich würde nicht in Erwägung ziehen, Option 2 und 3 überhaupt zu verwenden. Option 1 oder unsere neue Option 4 = nginx/apache/lighttpd usw. Ich freue mich, meine nginx-Konfiguration zu teilen, wenn Sie Probleme auftreten und sich entschließen, diese Route zu wählen. – munkee
Wenn Sie sich auf Websockets beziehen (wie socket.io), dann ist das Reverseproxying ein bisschen schwierig, aber machbar (ich habe es vorher gemacht). Googeln Sie einfach für Websocket Proxy für den Server Ihrer Wahl. Möglicherweise müssen Sie jedoch eine neuere Version des Servers auf Ihrem Produktionsserver verwenden. – slebetman