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?
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
.
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/');
Faced same issue while configuring Nodejs on local virtual machine. Try below steps,
- Use listen(PORT) in JS code, in your case PORT will be 8080
- Add below entry in server machine:
$ sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT