amazon-web-services - 仅从 ELB 访问 Amazon EC2 实例

标签 amazon-web-services amazon-ec2 dns amazon-elb aws-security-group

我在 EC2 实例上部署了一个简单的网站,并创建了一个弹性负载均衡器,将流量路由到此 EC2 实例。

我还在 DNS 注册器上创建了一条 CNAME 记录,将我的域 (www.example.com) 指向负载均衡器 DNS 名称 (load-balancer-1234567890.us-east-1.elb.amazonaws.com)。

我可以通过 3 种不同的方式在浏览器中成功访问我的网站:

  • EC2 实例公共(public) IP(例如:54.89.99.99)
  • ELB 公共(public) DNS 名称(例如:load-balancer-1234567890.us-east-1.elb.amazonaws.com)
  • 我的域名 DNS(例如:www.example.com)

但是,出于安全原因,我希望只能从负载均衡器通过端口 80 访问我的 EC2 实例。

因此,我更改了 EC2 实例的安全组:

  • 删除了允许端口 80 上来自所有源 (0.0.0.0/0) 的流量的规则
  • 添加了一条规则以允许来 self 的 VPC (172.31.0.0/16) 的端口 80 上的流量
  • 添加了一条规则以允许端口 80 上来自 ELB 安全组 (sg-xxxxxxxx) 的流量

之后,我仍然可以从 ELB DNS 名称访问我的网站,但现在我无法再从我的域 (www.example.com) 访问。我收到错误:ERR_CONNECTION_TIMED_OUT。

出了什么问题?

最佳答案

这似乎是您的计算机或 DNS 服务器中的 DNS 缓存问题。

  • 要清除计算机中的缓存,请使用 ipconfig/flushdns 刷新 DNS
  • 如果问题仍然存在,请尝试跟踪路由 www.example.com(或在 Windows 中跟踪 www.example.com)以查看它是否到达 ELB。如果源IP与当前DNS配置不同,
    • 这可能是由于配置错误(仔细检查)
    • 如果最新的 DNS 修改未传播(如果它指向以前的配置),则等待一段时间,直到 DNS 服务器根据 TTL 值清除缓存。

关于amazon-web-services - 仅从 ELB 访问 Amazon EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46750666/

相关文章:

C++ 从 DNS 的名称中检索 IP - LINUX

python - 如何通过 Boto3 检查现有 key 的存储类?

javascript - 使用 AWS S3 Javascript SDK 加载新网页

amazon-web-services - 如何让traefik在我的云架构上工作?

amazon-web-services - AWS API 工具与 AWS CLI : Is there a reason to use one instead of the other?

java - 如何为没有域名的主机创建SSL证书?

c - 在 linux c 编程中从 dns 查询获取 SOA 记录的 API 是什么?

amazon-web-services - AWS API Gateway 中的 CORS 配置

python - 如何更改存储桶的 amazon aws S3 时区设置

amazon-web-services - 如何在云形成模板中不使用互联网访问将ec2连接到s3