I'm sure this is very noobish, so forgive me. I'm trying to run a node.js server on port 8080 of my ubuntu 10.04.

Here's the result of iptables -L on the server:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

And here's the result of nmap -p 8080 (edited the ip address because everything is or should be wide open)

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
8080/tcp closed http-proxy

Why on earth is 8080 seen as closed? Adding this did not help:

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

I'm really confused.

I'll add this, in case it helps, but I don't know

 netstat -pan | grep 80
tcp        0      0*               LISTEN          16785/node      
tcp        0      0    *               LISTEN      16471/apache2

I can access my regular website running off of port 80 on apache, but the node.js server is inaccessible from outside. Accessing it from the server itself works fine.

So my question is: how would I go about debugging this? Could there be something else than iptables blocking some ports? How do I find out what it is?

Any help much appreciated!

  • To those who came here via Google: If you've hosted service on Google cloud and facing this issue, first make sure you've added the port in the exception rules of cloud firewall as well as in the operating systems firewall
    – Atul
    Aug 10, 2016 at 11:02

3 Answers 3


Thanks for adding the last netstat output, it really helped. You can't access node.js from outside because it is listening on localhost IP i.e You need to configure node.js to listen on so it will be able to accept connections on all the IPs of your machine.

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "");
console.log('Server running at');
  • I suspected that, but never came across a before, so disregarded it. I applied your fix, and that did it, thanks! May 20, 2011 at 6:39
  • I also have this problem. I followed this code but my nodejs server is still not accessible from outside. Nov 5, 2011 at 2:44
  • Yeah, same here.
    – user66336
    Sep 13, 2013 at 7:55
  • 2
    didn't work for me Dec 1, 2016 at 10:19
  • Didn't work for me on MacOS Sierra with Node v8.1.3
    – Liran H
    Aug 11, 2017 at 23:07

According to your netstat output, port 8080 is open only for which is localhost, hence accessing from the server works (which is localhost), but not from anywhere else.

The right output should look like

I had the same Issue.

I did the following

  1. In Google Cloud Console you need enable ports which you are using for Nodejs
  2. use following link to enable same ports on Ubuntu Server https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14-04

  3. And after this last one what I was missing is Networking -> Firewall Rules -> default-allow-internal ->all IP address

see this image


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.