NodeJS server not accessible from outside

15,819

Solution 1

I am pretty sure that you have to use

iptables -A OUTPUT -p tcp  --sport 8080 -j ACCEPT

for the outgoing rule (not dport). Apart from that, maybe there's an earlier rule that blocks the traffic? Try iptables -L.

Solution 2

I think you should try not specifying an IP.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Simple server\n');
}).listen(8080);
console.log('Server running at http://0.0.0.0:8080/');

Solution 3

Faced same issue while configuring Nodejs on local virtual machine. Try below steps,

  1. Use listen(PORT) in JS code, in your case PORT will be 8080
  2. Add below entry in server machine:
$ sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
Share:
15,819
quarks
Author by

quarks

Updated on June 18, 2022

Comments

  • quarks
    quarks almost 2 years

    I deployed a nodejs server in Rackspace and can be accessed internally, like using:

    curl http://127.0.0.1:8080

    However, it can't be accessed from the outside (the internet) even if I do this:

    iptables -A OUTPUT -p tcp  --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp  --dport 8080 -j ACCEPT
    

    Here is what my code looks like:

    var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Simple server\n');
    }).listen(8080, "0.0.0.0");
    console.log('Server running at http://0.0.0.0:8080/');
    

    Any ideas?

  • quarks
    quarks over 12 years
    tried it just now, but still don't work. Is this what you do in your server. How do you setup iptables for your nodejs server?
  • Eden Berdugo
    Eden Berdugo over 2 years
    Thank you so much. That fixed my problem using ubuntu machine.