quarks
quarks

Reputation: 35282

NodeJS server not accessible from outside

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?

Upvotes: 10

Views: 18309

Answers (3)

Alpesh Patil
Alpesh Patil

Reputation: 1936

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

Upvotes: 4

thejh
thejh

Reputation: 45578

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.

Upvotes: 8

Farid Nouri Neshat
Farid Nouri Neshat

Reputation: 30430

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/');

Upvotes: 9

Related Questions