268 votes

Meilleures pratiques lors de l'exécution de Node.js avec le port 80 (Ubuntu / Linode)

Je suis en train d'ouvrir mon premier Node.js serveur sur un nuage Linux nœud et je suis relativement nouveau pour les détails de l'administration Linux. (BTW, je n'essaie pas d'utiliser Apache en même temps.)

Tout est installé correctement, mais j'ai trouvé que si je utiliser l'utilisateur root, je ne suis pas en mesure d'écouter sur le port 80 avec nœud. Cependant, je préfère ne pas l'exécuter en tant que root pour des raisons de sécurité.

Quelle est la meilleure pratique pour:

  1. Bonne série de permissions / utilisateur pour le nœud de sorte qu'il est sécurisé / bac à sable?
  2. Autoriser le port 80 pour être utilisé à l'intérieur de ces contraintes.
  3. Démarrage de nœud et de l'exécuter automatiquement.
  4. Gérer les informations du journal envoyé à la console.
  5. Tout autre entretien général et des problèmes de sécurité.

Dois-je transférer du trafic du port 80 vers un autre port d'écoute?

Merci

552voto

Daniel Points 9676

Le Port 80

Ce que je fais sur mon nuage cas, je redirige le port 80 vers le port 3000 avec cette commande:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

Puis-je lancer mon Node.js sur le port 3000. Les requêtes sur le port 80 obtiendrez mappé sur le port 3000.

Vous devez également modifier votre /etc/rc.local le fichier et ajouter cette ligne moins le sudo. Qui va ajouter de la redirection lorsque la machine démarre. Vous n'avez pas besoin d' sudo en /etc/rc.local parce que les commandes sont à exécuter en tant qu' root lorsque le système démarre.

Les journaux

Utiliser le forever module pour lancer votre Node.js avec. Il fera en sorte qu'il redémarre si jamais il se bloque et il va rediriger les journaux de la console dans un fichier.

Lancement au Démarrage

Ajouter votre Node.js script de démarrage pour le fichier que vous avez modifié pour la redirection de port, /etc/rc.local. Qui fera tourner vos Node.js lancer un script au démarrage du système.

Digital Ocean & autres VPS

Cela ne s'applique pas seulement à Linode, mais le Numérique de l'Océan, AWS EC2 et d'autres fournisseurs de VPS ainsi. Cependant, sur RedHat systèmes basés /etc/rc.local est /ect/rc.d/local.

121voto

meet mehta Points 402

Donner De La Sécurité À L'Utilisateur L'Autorisation D'Utiliser Le Port 80

Rappelez-vous, nous ne voulons PAS d'exécuter vos applications en tant qu'utilisateur root, mais il y a un hic: l'utilisateur n'est pas autorisé à utiliser le port HTTP par défaut (80). Vous objectif est d'être en mesure de publier un site web que les visiteurs peuvent utiliser en accédant à un facile à utiliser l'URL http://ip:port/

Malheureusement, à moins que vous vous connectez en tant qu'utilisateur root, vous aurez normalement utiliser une URL comme http://ip:port - où le numéro de port > 1024.

Beaucoup de gens sont coincés ici, mais la solution est simple. Il y a quelques options, mais c'est celle que j'aime. Tapez les commandes suivantes:

sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node

Maintenant, quand vous dites à un Nœud de l'application que vous voulez qu'il fonctionne sur le port 80, il ne va pas se plaindre.

Vérifier ce lien de référence

9voto

Nick Benes Points 123

Pour le port 80 (qui était à l'origine de la question), Daniel est tout à fait exact. J'ai récemment déménagé à https et a dû passer de iptables à un peu de nginx proxy de gestion de la SSL cert. J'ai trouvé utile de répondre avec une gist par gabrielhpugliese sur la façon de gérer cela. Fondamentalement, Je

J'espère que ça peut sauver quelqu'un d'autre quelques maux de tête. Je suis sûr qu'il y est un pur-nœud façon de faire cela, mais nginx a été rapide et il a travaillé.

2voto

Robotbugs Points 521

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X