无法通过Internet

时间:2017-08-11 07:53:15

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

我正在使用免费的 AWS Linux实例,我已经安装了NodeJ并启动了我的Express JS应用(sudo node bin/www)我的应用在端口3000上运行。

当我ssh到该实例并执行cURL时,我的应用正在响应,但不是来自使用Instance Public IP的Chrome。

我在Security Groups添加了端口80,22,3000,可以随时随地访问该应用。 [附上ScreenShot] 该实例正在N. Virginia region中运行。

以下是我试图让它发挥作用的案例:

  • 使用端口3000
  • Public IP启动了我的应用
  • 使用端口3000
  • Private IP启动了我的应用
  • 使用端口3000
  • 0.0.0.0启动了我的应用
  • 使用端口3000
  • localhost启动了我的应用

以上所有情况都失败了,当我ssh到实例并执行cURL我的应用程序正在响应。

有人可以给我更多见解吗? or我错过了什么。我被这个阻止了。

当我将端口设置为80时,我可以访问应用程序,但我需要使用端口3000,因为我在端口80上运行前端框架。

使用yum在服务器上安装软件:

  • yum update
  • gcc-c ++ make
  • 的openssl-devel的
  • 来自官方网站的nodejs
  • npm install -g npm // update npm
  • mongodb的

AWS Security Group Screenshot

P.S:我已经阅读了有关无法通过互联网访问的应用程序的所有StackOverflow问题,但在我的情况下,我的应用程序可以从80端口访问,而不是从3000访问。

3 个答案:

答案 0 :(得分:2)

可能是您尝试从端口3000上的出站连接被阻止的网络访问您的应用程序。大多数企业网络只允许某些特定类型的流量离开网络,通常是http(s)等。 尝试从其他网络或不同地区的ec2主机进行测试。

答案 1 :(得分:0)

你允许CORS /起源吗?

var allowedOrigins = [origionDomain] res.header('Access-Control-Allow-Origin', allowedOrigins)

答案 2 :(得分:0)

为此浪费了3天。您需要禁用内部防火墙。我在centos 7上:

sudo systemctl禁用firewalld sudo systemctl停止firewalld