Connect with one of the following accounts


Please wait while we redirect...

Views: 142 Ask New Question

Unable to run NodeJS application on port 80. Getting following exception

$ node index.js
      throw er; // Unhandled 'error' event
Error: listen EACCES
    at Object.exports._errnoException (util.js:1022:11)
    at exports._exceptionWithHostPort (util.js:1045:20)
    at Server.setupListenHandle [as _listen2] (net.js:1298:19)
    at listenInCluster (net.js:1363:12)
    at Server.listen (net.js:1463:7)
    at Function.listen (/home/experimental/helloWorld/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/experimental/helloWorld/index.js:6:5)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
On By

1 Answer

Start your NodeJS application with sudo.

sudo node index.js

Right way to fix

To run anything under 1024 port you need sudo permission on Unix systems, so you need to start the service with root permissions.

But running the service sudo permissions is not really a good idea as it makes your system more vulnerable to attack. So following are some alternatives to run your service on 8080 and do port forwarding from 80 to 8080.

1. Using IP Tables

Execute the following commands to make iptables allow traffic on 80 and 8080

sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

Now execute the following command to forward port 80 traffic to 8080

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

2. Using Nginx

Add the following to nginx.conf

server {
        listen  80;
        location / {
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP   $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
On By

Answer This Question

Top Tutorials

Top Questions

Top Articles

Top Blogs

Top News