Anshul
Anshul

Reputation: 179

Can't access nodejs server on aws

I have an AWS EC2 instance which I am using for my node js application. I cannot access any application page on the server. I wrote this simple code solely for testing purposes but I cannot access even this from my browser.

    var express = require('express');
var app = express();

app.listen(3000, ()=>  {
    console.log('listening');
});

app.get('/',(req,res)=>  {
    res.send('hi');
});

On navigating to http://:3000, I should be able to see "hi" written but the request times out. Here are my security group configs : enter image description here

Upvotes: 3

Views: 8076

Answers (2)

JohnMcClenon
JohnMcClenon

Reputation: 51

My code (shown below) is a bit different, but I was having the same problem with connecting from a remote browser:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

What I had to do was replace const hostname with the complete AWS server IP: ec2-xx-xx-xx-xx.compute-1.amazonaws.com:3000/

Make sure you have port 3000 open in your security group, or this will not work.

I was then able to connect to the NodeJS server from my browser on my PC.

Hope this helps. The corrected code is shown below (replace the x's with your actual IP address. You can get this on your EC2 dashboard.

const http = require('http');

const hostname = 'http://ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com/';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

I got the code for this NodeJS server from:

https://websiteforstudents.com/install-the-latest-node-js-and-nmp-packages-on-ubuntu-16-04-18-04-lts/

Upvotes: 5

Anshul
Anshul

Reputation: 179

Solved the problem with some help. Since the port available to me was port 80, so I just forwarded the port 8080 to port 80 via. port forwarding and it worked out. Sharing the link from where I found the solution:installing nodejs and forwarding port on aws

Upvotes: 6

Related Questions