无法使用HTTP访问AWS上的表达服务器

时间:2018-01-26 22:16:49

标签: node.js amazon-web-services amazon-ec2

为了熟悉节点,AWS和Web托管,我决定创建一个托管在节点/快速服务器上的简单Web应用程序,然后尝试在AWS实例上托管它。

我的应用程序在我的机器上本地运行,这是server.js代码:

import express from 'express';
import path from 'path';
import open from 'open';
import config from '../webpack.config.dev';
import webpack from 'webpack';

const port = 80;
const app = express();
const compiler =webpack(config);

app.use(express.static('dist'))

app.use(require('webpack-dev-middleware')(compiler,{
  noInfo: true,
  publicPath: config.output.publicPath
}));

app.get('/', function(req, res){
  res.sendFile(path.join(__dirname, '../src/index.html'));
});

app.listen(port, function(err){
  if(err){
    console.log(err);
  }else{
    open('http://localhost:' + port);
  }
});

但是当我尝试在AWS实例上部署并运行它时,我似乎无法访问正在运行的节点服务器,

以下是我遵循的步骤:

1。要启动AWS实例,我选择Amazon Linux实例enter image description here

2.对于安全规则,这是我应用的入站规则:enter image description here

3。我通过SSH连接到我的实例,安装节点然后git从github

获取我的应用程序

4。这是我的home / ec2-user / testRep文件夹在克隆我的存储库并安装节点依赖项之后的样子:enter image description here

5。我使用npm start

运行服务器

6.服务器似乎没有任何问题:

enter image description here

但是当我使用浏览器访问公共DNS时,我找不到网站

不确定我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

您正在localhost中部署,在您的监听功能中,您应该输入类似的内容:

app.listen(port, function(err){
  if(err){
    console.log(err);
  }else{
    open('http://0.0.0.0:' + port);
  }
});

也不要忘记使用所有权限运行它(通常端口80需要更多权限,如root)