Welche Ports sollte ich node.js überwachen? Wie und warum?

8

Meine node.js-Anwendungen Ich habe auf Port 80 nach http und 443 nach https gelauscht, was meiner Ansicht nach ziemlich normal war.

Einige Beispiele, die ich kürzlich gelesen habe, verwenden jedoch andere Ports (z. B. 8080 und 8081) zum Abhören von http / https und verwenden dann andere Mittel wie iptables oder ufw -Regeln, um die Ports 80/443 über zu bedienen Umleitung von Paketen zu / von den anderen.

Sehen Sie zwei Beispiele hier und hier .

Meine Frage ist also Warum möchte ich nicht direkt auf die Ports 80 und 443 hören?

Gibt es Sicherheitsprobleme? Ist es einfach ein Fall, dass diese Autoren keine Erlaubnis haben, auf Ports unter 1024 zu hören (ich würde das überraschend finden?)? Laufen die meisten Leute Apache entlang Seitenknoten? (Ich nicht).

Angenommen, es gibt einen guten Grund, warum ich nicht direkt auf 80 und / oder 443 hören möchte, welche Methode sollte ich verwenden, um den Datenverkehr von 80/433 an meine alternativen Ports der Wahl weiterzuleiten?

Ich habe iptables und ufw oben erwähnt, ist einer dieser besser als die anderen, oder gibt es eine andere Methode, die ich verwenden sollte? Hängt die Antwort davon ab, ob ich meine Last zwischen Prozessen ausgleiche?

Vielen Dank im Voraus.

    
Joshua 18.02.2013, 15:01
quelle

1 Antwort

14

Die erste Zeile des ersten Artikels, den Sie verlinkt haben, erwähnt den Grund.

%Vor%

Damit der Knoten an den Port 80 oder 443 gebunden wird, müssten Sie ihn als root ausführen, was keine gute Idee ist.

Die Methode, mit der Sie den Datenverkehr zu den höheren Ports umleiten, liegt bei Ihnen. Das iptables ist das am wenigsten ressourcenintensive und einfachste. Eine andere Methode wäre die Verwendung von NginX / Apache als Proxy für Node. Ich würde sagen, der Hauptvorteil dieser Methode ist, dass Sie dann auch Dinge wie statische Dateien von dort aus bedienen können und sie nicht über Node bedienen müssen.

Apache und NginX sind beide explizit dafür ausgelegt, statische Dateien sehr gut zu portieren, daher sind sie extrem gut darin, wohingegen Node eine ganze JS-Umgebung ist, mit all dem damit verbundenen Aufwand. Node kann viele simultane Verbindungen gleichzeitig übertragen, und Dateien können durchaus für normale Ladevorgänge verwendet werden. Dafür werden jedoch mehr Ressourcen benötigt als für NginX.

Die Verwendung eines HTTP-fähigen Proxys wie Apache / NginX bedeutet auch, dass Sie sehr einfach mehrere Instanzen von Node einrichten können, um verschiedene Subdomains oder sogar unterschiedliche Pfade auf derselben Domain auszuführen.

    
loganfsmyth 18.02.2013, 15:05
quelle

Tags und Links