Quels ports dois-je node.js écouter? Comment et pourquoi?
Mon node.js applications que j'ai à l'écoute sur le port 80 pour http et 443 pour https, qui je croyais était assez pratique standard.
Cependant un certain nombre d'exemples que j'ai lu récemment d'utiliser d'autres ports (par exemple 8080 et 8081) pour l'écoute de http/https, puis utiliser d'autres moyens tels que des iptables
ou ufw
règles de servir les ports 80 /443 via réacheminement des paquets de/par rapport aux autres.
Voir les deux exemples ici et ici.
Donc ma question est pourquoi ne voudrais-je pas écouter directement les ports 80 et 443?
Sont là des questions de sécurité à portée de main? Est-ce simplement un cas de ces auteurs n'ayant pas les autorisations pour l'écoute sur les ports inférieurs à 1024 (je l'avais trouvé cela étonnant?)? La plupart des gens de s'exécuter Apache à côté de nœud? (Je n'ai pas).
En supposant qu'il existe une bonne raison pour expliquer pourquoi je ne veux pas écouter directement 80 et/ou 443, quelle méthode dois-je utiliser pour relayer le trafic à partir de 80 /433 à mes autres ports de choix?
Je l'ai mentionné iptables et ufw ci-dessus, est l'un de ces meilleurs que les autres, ou est-il une autre méthode que je devrais utiliser? La réponse dépendra de si je suis d'équilibrage de ma charge entre les processus?
Merci d'avance.
Si je ne me trompe pas, le port 1337 est en train de devenir un standard pour exécuter nodejs. Pour exécuter des applications, vous pouvez utiliser NGINX comme serveur proxy inverse.
OriginalL'auteur Joshua | 2013-02-18
Vous devez vous connecter pour publier un commentaire.
La première ligne de l'article premier est lié à la mentionne la raison.
Pour le nœud to bind to port
80
ou443
, vous devez l'exécuter en tant que root, ce qui n'est pas une bonne idée.La méthode que vous utilisez afin de rediriger le trafic vers les ports supérieurs à vous. Le
iptables
est la moins gourmande en ressources et plus simple. Une autre méthode serait d'utiliser NginX/Apache proxy vers le Nœud. Je dirais que le principal avantage de cette méthode est que vous pouvez aussi servir des choses comme les fichiers statiques à partir de là, et ne pas avoir à les servir par Nœud.Apache et NginX sont tous deux conçus expressément pour être très bon à servir les fichiers statiques, de sorte qu'ils sont très bon dans ce domaine, alors que le Nœud de l'ensemble de la JS environnement, avec tous les frais généraux qui sont impliqués. Le nœud est grande à la remise des lots de connexions simultanées, et il peut certainement servir des fichiers parfaitement pour les charges normales, mais il va utiliser plus de ressources que NginX pour le faire.
En utilisant un HTTP conscient de proxy comme Apache/NginX signifie également que vous pouvez très facilement mettre en place plusieurs instances de Nœud pour exécuter les différents sous-domaines, ou même des chemins différents sur le même domaine.
Mis à jour.
mais si vous utilisez l'approche avec Apache ou NginX...ce qui signifie, que ces serveurs ne doivent racine-privilèges afin d'écouter sur le port 80, non?.. alors pourquoi n'est-il pas un problème pour eux, mais pour node.js il est?
Ces serveurs ne pas fonctionner comme votre nom d'utilisateur. Lorsque vous démarrez, vous êtes généralement en leur disant de commencer, et puis ils passer à exécuter en tant qu'utilisateur propre, et les scripts d'installation pour eux ont mis en place leurs utilisateurs d'avoir accès à ces ports. On pourrait faire la même chose pour votre propre si tu le voulais vraiment, mais la plupart des gens courir Nœud derrière un proxy.
OriginalL'auteur loganfsmyth