【发布时间】:2023-03-30 16:40:02
【问题描述】:
我的前端和后端应用程序通过 AWS ECS 运行。前端 EC2 实例有一个公共 IP,因此可以通过 Internet 连接,但后端 EC2 实例只有一个私有 IP。这两个实例都位于具有不同子网(公共和私有)的同一 VPC 中。我已经验证了路由表、NAT、NACL 和安全组配置,一切都符合要求。当我的前端应用程序以私有 IP 访问后端时,它会出现连接超时,即无法连接。
我已经验证了通过 SSH 连接到公共实例并 ping 到后端实例的私有 IP,ping 没问题。我还尝试从我的前端实例 curl 到使用私有 IP 作为主机的后端 API,我得到了响应,同样的事情也从前端 docker 容器中得到验证。但是前端应用程序无法向后端 API 发出请求。
【问题讨论】:
-
您是否从前端 EC2 实例中测试 curl 到私有 API?如果这可行,但您的应用在同一实例上无法访问 API,那么您的应用正在做不同的事情。
-
您的前端代码是否真的在 EC2 服务器上运行?或者它是某种在浏览器中实际运行的网络应用程序?
-
@jarmod 我已经测试了从前端 EC2 到私有 API 的 curl 并且它正在工作,如果你说应用程序有问题,那么我也尝试过放置一个空白的 html 页面和在那里调用私有 API,仍然无法正常工作
-
@MarkB 我的前端代码是 VueJs 中的 Web 应用程序,但它是使用 Nuxt 的服务器端呈现的 Web 应用程序。这就是为什么我将它部署在 EC2 实例而不是 S3 中的原因。
-
您确定从前端到后端的 API 调用 100% 发生在 UI 在服务器上呈现时,然后才显示在 Web 浏览器中?如果是这样的话,这将是一个完全静态的 web 应用程序。
标签: amazon-web-services docker amazon-ec2 amazon-ecs amazon-vpc