I create and launch an app like this:
express -s -t ejs
npm install express
npm install ejs
node app.js
and it works (on port 3000). But when I go and change the port to 80, then running node app.js
outputs this:
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)
This works too on my laptop, but not on my Amazon EC2 instance, where port 80 is open. Can figure out what's wrong. Any tips?
Perhaps there is something else running on port 80 previously?
Perhaps do a port scan and confirm that it is not being used already?
Kindness,
Dan
Are you starting your app as root? Because lower port numbers require root privileges. Maybe a sudo node app.js works?
BUT, you should NOT run any node.js app on port 80 with root privileges!!! NEVER!
My suggestions is to run nginx in front as a reverse proxy to your node.js app running on port e.g. 3000
If you really want to do this you can forward traffic on port 80 to 3000.