我有一个3层ECS容器应用程序。在表示层中,我有一个公共子网,其中在nginx服务器上运行有一个角度应用程序。为此,我有面向互联网的应用程序负载均衡器。在专用子网中,我具有Java Spring REST API服务,该服务在端口8080上的tomcat服务器上运行,因此有应用程序内部负载平衡器。在另一个专用子网中,我有RDS数据库。
应用程序客户端将请求发送到内部负载平衡器url,并在应用程序中呈现响应。
虽然我可以在公共子网中SSH到ec2并卷曲以在私有子网中休息服务并获得响应:
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日志
答案 0 :(得分:1)
基于评论。
该问题很可能是由于从客户端(即浏览器)调用了Internet负载均衡器的url端点引起的。
内部负载均衡器的网址不可公开调用。
要解决此问题,必须将应用程序修改为仅使用公共可用的端点,或者将内部负载平衡器更改为面向Internet。