ConfusedDeer
ConfusedDeer

Reputation: 3415

Running a node.js server on my VPS on port 3000 and the connection times out

In hostgator I have a VPS running centOS. I installed NodeJS and screen. I added the following code to a file named index.js:

//1
var http = require('http');

//2 
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('<html><body><h1>Hello World</h1></body></html>');
}).listen(3000);

console.log('Server running on port 3000.');

On 'screen:1' I run the following command:

node index.js

It gives me the console output stating 'Server running on port 3000.' I switch to 'screen:0' and run the following command:

curl localhost:3000

and I get the following response:

<html><body><h1>Hello World</h1></body></html>

Yet, when I try my server's IP address (substitute the xxx for a real IP address, cause I'm not disclosing my VPS IP address):

xxx.xxx.xxx.xxx:3000

The page never comes up and eventually it times out. I've tried various ports (8080, 7000) and to not avail. Do I need to place the iOS project in a different directory. Currently I have it in /root/Projects/NodeTutorial2/index.js. What do I need to do to get a hello world response from my VPS?

Upvotes: 1

Views: 3463

Answers (1)

Paul
Paul

Reputation: 36329

If you're getting a response from on the box, but not from other boxes, it's almost certainly a firewall issue. Turning off IPTables or allowing the traffic in on the port in question is one option but an easier / more appropriate option is to simply have your app use port 80 (for HTTP) or 443 (for HTTPS). You can either do that by listening to that port on the app directly, or by having a web server that acts as a reverse-proxy for you (e.g. NGINX or Apache).

Upvotes: 2

Related Questions