当前设置
给定以下 ALB DNS:
my-alb-dns.com
以及在 ECS 中运行的以下容器:
container-a
container-b
我对其进行了配置,以便可以路由通过 ALB 的流量通过路径重写到我的 ECS 集群中的相应服务:
my-alb-dns.com:80/container-a/my/endpoint -> container-a:8080/my/endpoint
my-alb-dns.com:80/container-b/my/endpoint -> container-b:8080/my/endpoint
这很好(通过使用 nginx),但我在问自己,是否真的需要使用额外的 nginx 服务器来实现路径重写。是否有计划通过自定义路径重写规则来扩展 ALB 功能?到目前为止,我找不到任何相关信息在文档中。
我也看了Lamda@Edge但我认为,仅仅为了简单重写而引入 CloudFront 和 Lamda 有点小题大做(相比之下,nginx 只需要 1 行配置)。
关于这一点,是否有任何最佳实践,或者我应该继续希望 AWS 能够在遥远的未来实现它并坚持使用我当前的 nginx 解决方案?
答案1
ALB 不支持修改请求,而且我不知道有任何计划包含此功能。这是一个巨大的麻烦,所以我并不惊讶 AWS 暂时不理会它。坚持使用 nginx(或等效产品,如 haproxy),或修改您的应用程序以接受/container-X
请求路径中的前缀。
答案2
如果您的应用程序可以支持,在类似情况下我会使用基于主机的路由而不是基于路径的路由。
例如
service1.mydomain.com -> myalb.com -> tg1 -> container1:8000
service2.mydomain.com -> myalb.com -> tg2 -> container2:8001
您的应用程序将调用
service1.mydomain.com
代替
mydomain.com/service1