node.js - 尝试创建可公开访问的 AWS Cloud9 URL
问题描述
我正在使用 AWS Cloud9,它一直很顺利,但现在我正在尝试公开我的 URL,以便我可以在 Postman 中发出 HTTP 请求,我真的很挣扎。我是一个初学者全栈开发人员,任何帮助将不胜感激。
谢谢,史蒂文
我正在尝试正确遵循本指南:
https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html
具体来说,我进入第 4 步,它要求我更改代码中的 IP 地址。当我将 Node JS Express 应用程序的 app.listen IP 地址更改为我的 EC2 实例 IP 地址时,出现错误。
我想我已经成功地让我的 EC2 实例可以公开访问,只是我的代码没有正确监听(这些步骤似乎很容易遵循,但我可能错了。
var express = require("express");
var app = express();
app.set("view engine", "ejs");
app.get("/", function (req, res){
res.render("helloWorld");
});
app.listen(8080, '**AWS EC2 instance IP**', function(){
console.log("Server Has Started!");
});
当我没有在 app.listen 中指定 IP 地址时,它运行良好,但是当然我只能从同一浏览器中的不同选项卡访问服务器。以下是当我运行包含AWS EC2 实例 IP的代码时控制台输出的内容:
events.js:174
throw er; // Unhandled 'error' event
^
Error: listen EADDRNOTAVAIL: address not available **AWS EC2 instance IP**:8080
at Server.setupListenHandle [as _listen2] (net.js:1262:19)
at listenInCluster (net.js:1327:12)
at doListen (net.js:1460:7)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:832:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1306:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
[... lines matching original stack trace ...]
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
解决方案
EC2 实例的公共 IP 没有绑定到 IP 堆栈。从公共 IP 到实例的私有 IP 的转换由 Internet 网关自动处理。
指定实例的私有 IP 是您实际需要做的,尽管这可能并不直观。或者,如指南所示,使用0.0.0.0
表示“所有接口”。
推荐阅读
- c# - 有没有办法通过自动调用基本方法来扩展方法而不用 C# 编写调用?
- php - PHP - 检查字符串是否包含“youtube”然后显示
- microservices - 如何为链式微服务存储状态客户端
- android - Android 11 的 READ_EXTERNAL_STORAGE 权限
- c# - uniqueidentifier 与 newid() 不兼容
- javascript - 为 html 文件中的输出编码 HTML 文件
- javascript - 如何合并两个不同类型的可观察对象
- java - Springboot如何设置提升点击的值?
- javascript - javascript - 读取音频流
- typescript - 返回具有从 rest 参数映射的类型的值的数组