Node.js + Express: l’application ne commence pas à écouter 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 cela fonctionne (sur le port 3000). Mais lorsque je modifie le port sur 80, l’exécution du node app.js 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. (/var/www/thorous/app.js:35:67) at Module._comstack (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. (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?

    Vous démarrez 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 devriez PAS exécuter d’application node.js sur le port 80 avec les privilèges root! JAMAIS!

    Ma suggestion est d’exécuter nginx devant en tant que proxy inverse pour votre application node.js s’exécutant sur le port, par exemple 3000

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

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

    Peut-être y at-il autre chose qui tournait sur le port 80 précédemment?

    Peut-être faire un scan du port et confirmer qu’il n’est pas déjà utilisé?

     nc -z <> 80 

    La gentillesse,

    Dan