Chr*_*ang 1 amazon-ec2 node.js
如果我在 Amazon EC2 服务器上运行基本的 nodejs.org 示例,我会在控制台中收到消息“服务器正在运行”。但是如果我尝试在浏览器中打开它,使用我的弹性 IP + 端口,我没有得到任何结果。
我想我已经打开了 TCP 端口 22 和 1337(我不是 100% 确定,因为我是这个东西的新手)。
大概你的意思是这个例子:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Run Code Online (Sandbox Code Playgroud)
您会收到类似这样的消息服务器在http运行:// 127.0.0.1:1337 / -的强调部分是这里的关键,即服务器已配置为监听IP地址127.0.0.1(又名本地主机只) ,而您正试图通过您的弹性 IP 地址浏览它。
因此,您可以通过将listen()
语句中的127.0.0.1 替换为已分配给您的 EC2 实例的私有/内部 IP 地址来实现您的目标。
或者,您可以改用公共/外部 DNS 名称,它根据 DNS 查询的来源展示鲜为人知的动态 IP 地址解析,请参阅例如为什么我有两个 IP 地址和两个主机名?:
外部 DNS 名称(看起来像 ec2-72-44-45-204.compute-1.amazonaws.com)解析为 Amazon EC2 网络外部的实例的公共 IP 地址和 Amazon EC2 网络内部的私有 IP 地址.
最后(根据cyberx86的评论,谢谢!),您可以完全省略可选的地址参数(但请参见下文),请参阅server.listen(port, [hostname], [callback]):
如果省略主机名,服务器将接受定向到任何 IPv4 地址 (INADDR_ANY) 的连接。
但请注意,在高级场景中这可能并不总是正确的事情,因为在最近在虚拟私有云 (VPC) 中引入弹性网络接口 (ENI)之后,实际上可能有多个网络接口可用,其中是给你创造更多的埃尼斯和第二ENI连接到一个实例的能力(再次,这是VPC内)。
归档时间: |
|
查看次数: |
3146 次 |
最近记录: |