AWS ECS动态端口映射+ nginx + app

时间:2017-10-26 17:22:55

标签: amazon-web-services docker nginx amazon-ecs

我有一个典型的ECS基础架构,在ALB后面有一个应用程序。我利用CD进程的动态主机映射(ECS可以在没有端口冲突的情况下在同一主机上部署新容器)。

现在我想在它前面添加一个nginx容器(对于从ALB到EC2的SSL)。问题是,在nginx配置中,我必须使用端口指定应用程序端点。在动态分配端口的情况下,我无法将此值硬编码到nginx配置中。我该怎么处理这个?

2 个答案:

答案 0 :(得分:1)

我不认为尝试到达这个动态端口很有意义......

目前您只有一个nginx服务器正在运行,因此您有一个应用程序负载均衡器,它将端口80上的传入流量定向到EC2实例,位于与您的Web服务器容器对应的随机端口。

<ALB domain name>:80 -> <container EC2 instance IP>:<container dynamic port>

但是如果您的服务正在扩展,那么您将拥有两个容器,在两个不同的端口上运行,可能在不同的EC2实例上运行。

<ALB domain name>:80 -> <container EC2 instance IP>:<dynamic port>
                     -> <container2 EC2 instance IP>:<another dynamic port>

您的ALB会在每个容器中轮流联系。

直接映射到其动态端口上的其中一个容器会绕过它而失去负载均衡器的优势。

因此,添加SSL的代理必须在其内部域名(或路由53中已分配的域名)上,在端口80上到达负载均衡器本身。

答案 1 :(得分:0)

您可以使用JWilder Nginx Proxy泊坞窗容器。这允许您使用可在ECS中配置的环境变量进行动态映射。