How to start node.js on port 80 on a linux server?

后端 未结 5 1450
暖寄归人
暖寄归人 2021-01-03 04:47

When I try to start node on port 80, the error tells me that the port is in use. I imagine that\'s Apache.

What is the proper way to \"take over\" port 80, and keep

相关标签:
5条回答
  • 2021-01-03 05:31

    To take over port 80 when another process is listening on it, you must kill the process (or somehow tell it to stop listening). To ensure that Apache doesn't try to listen on port 80 again the next time it starts, you need to edit its configuration or prevent it from starting up.

    To see which process is listening on port 80, run sudo netstat -ntap and look for the row with Local Address ending in port :80. The PID of the process (and the name) is in the far right column.

    0 讨论(0)
  • 2021-01-03 05:34

    A constantly running unused apache maybe a security hole, in any case no sense in running unused services.

    On the chance you're on ubuntu, this what I used..

    sudo service apache2 stop
    sudo update-rc.d apache2 remove
    
    0 讨论(0)
  • 2021-01-03 05:35

    you can use ip tables to map port 80 to 8000

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
    

    to make it permanent

    sudo sh -c "iptables-save > /etc/iptables.rules"
    

    and add

    pre-up iptables-restore < /etc/iptables.rules
    

    to your /etc/network/interfaces

    0 讨论(0)
  • 2021-01-03 05:50

    you can use node.js with node-http-proxy check this link How to use vhosts alongside node-http-proxy? and How do I run Node.js on port 80?

    Thanks & Regards,
    Alok

    0 讨论(0)
  • 2021-01-03 05:53

    You can access port 80 once you stop the service currently using it.

    In your case, follow these steps:

    1) Use systemctl to stop apache2:

    sudo systemctl stop apache2
    

    2) Check apache2 status:

    sudo systemctl status apache2
    

    Or just by entering http://localhost in your browser. If you get an error, you are good to go.

    ERR_CONNECTION_REFUSED
    

    3) Now start your NodeJS server on port 80.

    4) You can access your server at http://localhost

    UPDATE

    If you are seeing errors on your console, try node preceding with sudo For eg. sudo node server.js

    Here are the errors

    events.js:137
          throw er; // Unhandled 'error' event
          ^
    
    Error: listen EACCES 0.0.0.0:80
        at Object._errnoException (util.js:1003:13)
        at _exceptionWithHostPort (util.js:1024:20)
        at Server.setupListenHandle [as _listen2] (net.js:1349:19)
        at listenInCluster (net.js:1407:12)
        at Server.listen (net.js:1495:7)
        at Object.<anonymous> (/home/abdus/Desktop/voice-recognition/test.js:7:4)
        at Module._compile (module.js:660:30)
        at Object.Module._extensions..js (module.js:671:10)
        at Module.load (module.js:573:32)
        at tryModuleLoad (module.js:513:12)
    
    0 讨论(0)
提交回复
热议问题