【问题标题】:Unable to call Private Address using Public Address (AWS EC2)无法使用公共地址 (AWS EC2) 调用私有地址
【发布时间】:2020-07-12 10:15:54
【问题描述】:

我有 2 个 Ec2 实例(公共和私有)

公开:我在 xampp 上托管了 Angular 网站

私下:我托管 Node 服务器(端口 3000)

在 Angular 中我使用 (http://10.0.1.68:3000) 进行 API 调用 当我在 Public Ec2 中打开 Chrome 浏览器时,角度站点工作正常。像本地主机/家庭。然后他调用私有服务器(http://10.0.1.68:3000)并从数据库中获取数据。

但是当我使用公共地址 (37.22.XXX.XX) 时,Angular 设计会在我的浏览器中加载,但它不会使用 http://10.0.1.68:3000 调用 Node API 有什么想法吗???

【问题讨论】:

  • “Node API with 10.0.1.68:3000”是否在客户端(即浏览器)进行调用?
  • 是的,这个链接嵌入在 Angular 站点中。

标签: amazon-web-services amazon-ec2


【解决方案1】:

由于对 Node API (10.0.1.68:3000) 的调用是在客户端(基于 cmets)完成的,因此会失败。

原因是节点服务器托管在 VPC 的私有子网中。由于它是私有的,它无法从互联网访问

它适用于 EC2 实例,因为 ec2 实例位于同一个 VPC 中。

最简单的解决方案是将 Node API 也放置在公共子网中,因为调用它需要互联网访问。另一种方法是在公共子网中设置代理服务器,将来自互联网的 api 调用代理到私有子网。 API Gateway 也可以设置。这样,您的前端将调用 API getaway 端点,而这些端点又会调用您的私有 Node API。

【讨论】:

  • @DeepDahelay 嗨。您不必这样做,但这是最简单的方法。如果您从 Internet 调用您的 api,它必须具有公共 IP。 10.0.1.68:3000 的地址不能通过 Internet 路由。您还可以设置 API 网关以通过网关访问您的 Node api。
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2015-05-10
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多