【发布时间】:2020-12-17 05:08:17
【问题描述】:
我有一个 3 层 ECS 容器应用程序。在表示层中,我有一个公共子网,其中有一个 Angular 应用程序在 nginx 服务器上运行。为此,我有面向互联网的应用程序负载均衡器。在私有子网中,我有 Java Spring REST API 服务,该服务在端口 8080 上的 tomcat 服务器上运行,为此有应用程序内部负载平衡器。在另一个私有子网中,我有 RDS 数据库。
应用程序客户端向内部负载均衡器 url 发送请求,并在应用程序中呈现响应。
虽然我能够 ssh 到公共子网中的 ec2 并 curl 以在私有子网中休息服务并获得响应:
curl -X POST http://internal-qa-XXXXX-XXXXXXX.eu-west-2.elb.amazonaws.com:8080/api/products/all
在浏览器中访问客户端时,我无法收到响应。该应用程序运行正常,但是在浏览器控制台中检查时,我看到:
POST http://internal-qa-XXXXX-XXXXXXX.eu-west-2.elb.amazonaws.com:8080/api/products/all net::ERR_NAME_NOT_RESOLVED.
我用 Docker logs
【问题讨论】:
-
"然而在控制台"哪个控制台? AWS 控制台?
-
浏览器控制台,对不起
-
但是
internal-qa-XXXXX不是内部LB的端点吗?如果是,则无法通过 Internet 从浏览器访问它,就像您从应用程序中的 JavaScript 调用它一样。 -
似乎内部端点是由客户端从我的浏览器调用的,而是应该在子网之间内部调用。我认为浏览器将端点视为公共 ip,因此无法访问
-
看来是这样。如果您不介意,我可能会提供答案以供将来参考。
标签: amazon-web-services amazon-ec2