49 votes

Node.js + Express : l'application ne démarre pas l'écoute sur le port 80

Je crée et lance une application comme celle-ci :

 express -s -t ejs
npm install express
npm install ejs
node app.js

et ça marche (sur le port 3000). Mais quand je vais changer le port en 80, alors l'exécution de node app.js génère ceci :

 node.js:198
throw e; // process.nextTick error, or 'error' event on first tick
          ^
TypeError: Cannot call method 'getsockname' of null
at HTTPServer.address (net.js:746:23)
at Object.<anonymous> (/var/www/thorous/app.js:35:67)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.<anonymous> (module.js:470:10)
at EventEmitter._tickCallback (node.js:190:26)

Cela fonctionne également sur mon ordinateur portable, mais pas sur mon instance Amazon EC2, où le port 80 est ouvert. Peut comprendre ce qui ne va pas. Des conseils ?

93voto

Michael Connor Points 723

Si vous voulez vraiment faire cela, vous pouvez transférer le trafic sur le port 80 à 3000.

 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

72voto

Thomas Fritz Points 669

Démarrez-vous votre application en tant que root ? Parce que les numéros de port inférieurs nécessitent des privilèges root. Peut-être qu'un nœud sudo app.js fonctionne ?

MAIS, vous ne devez PAS exécuter d'application node.js sur le port 80 avec les privilèges root !!! JAMAIS!

Mes suggestions sont d'exécuter nginx devant en tant que proxy inverse vers votre application node.js s'exécutant sur le port, par exemple 3000

-1voto

Daniel Elliott Points 13253

Peut-être y a-t-il autre chose en cours d'exécution sur le port 80 auparavant ?

Peut-être faites-vous une analyse de port et confirmez-vous qu'il n'est pas déjà utilisé ?

 nc -z <<your IP>> 80

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