【发布时间】:2017-08-11 07:53:14
【问题描述】:
我正在使用免费套餐 AWS Linux 实例,我已经安装了 NodeJs 并启动了我的 Express JS 应用程序 (sudo node bin/www),我的应用程序在端口 3000 上运行。
当我 ssh 到实例并执行 cURL 时,我的应用正在响应,但不是来自使用实例公共 IP 的 Chrome。
我在Security Groups 中添加了端口 80、22、3000,以便从任何地方访问应用程序。 [附截图]
实例正在N. Virginia region 中运行。
以下是我试图让它发挥作用的案例:
- 使用
Public IP和端口 3000 启动我的应用程序 - 使用
Private IP和端口 3000 启动我的应用程序 - 使用
0.0.0.0和端口 3000 启动我的应用程序 - 使用
localhost和端口 3000 启动我的应用程序
上述所有情况都失败了,当我 ssh 到实例并执行 cURL 时,我的应用程序正在响应。
有人能给我更多的见解吗? or我错过了任何东西。我已经被这个阻止了。
当我将端口设置为80 时,我可以访问应用程序,但我需要使用端口3000,因为我在端口80 上运行前端框架。
使用 yum 在服务器上安装软件:
- 百胜更新
- gcc-c++ 制作
- openssl 开发
- nodejs来自官网
- npm install -g npm //更新npm
- mongodb
P.S:我已阅读有关无法从 Internet 访问的应用程序的所有 StackOverflow 问题,但就我而言,我的应用程序可从端口 80 而非 3000 访问。
【问题讨论】:
-
您的安全组看起来正确,但它还应该指定组的类型?你在任何地方都能看到打字吗?您也可以发布用于启动节点服务器的代码。问题也可能存在
-
@Hammer 是的,我已将
Security group中端口3000的类型设置为任何地方。启动应用代码:sudo node bin/www -
抱歉让我澄清一下,我的意思是您运行的文件中设置服务器的实际代码
-
@Hammer,我正在使用
Express JS,我已经使用express generator命令开发了我的应用程序:npm install express-generator -g有标准的www文件来运行应用程序,我只是更改了var port = normalizePort('3000');如果您需要更多信息,请告诉我。 -
你允许 CORS/origions 吗? var allowedOrigins = [config.allowedOrigins] res.header('Access-Control-Allow-Origin', allowedOrigins);
标签: node.js amazon-web-services express amazon-ec2